Comment puis-je exporter des 2 requêtes à une seule feuille de calcul dans excel à partir d'access
Je suis en utilisant Transférerfeuillecalcul d'exporter une requête d'accès à excel et il fonctionne très bien.
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "qryName", "test1.xls", True
Maintenant, j'ai une autre question et je veux ajouter des données à partir de cette requête à la même feuille de calcul. Comment puis-je faire cela?
- Essayez de travailler avec des objets de feuille de calcul au lieu de DoCmd. Voir le troisième poste ici: pcreview.co.uk/forums/...
- Si votre 2 requêtes sont tout à fait similaire, vous pouvez aussi l'union entre eux, puis utilisez
DoCmd.TransferSpreadsheet
sur la requête union. - Qu'advient-il si vous exécutez à nouveau la commande même à l'aide de la deuxième requête ? Fait-il ajouter les données ou écrire ?
- En fait, je suis en utilisant des objets à éditer le fichier excel mise en forme et de la substance après la Transférerfeuillecalcul. Je pense que la différence entre mon code et l'exemple que vous avez souligné, c'est l'utilisation de OpenRecordset pour transférer des données vers excel au lieu de Transférerfeuillecalcul. Peut-être que je peux utiliser OpenRecordset après Transférerfeuillecalcul pour la deuxième requête pour ajouter les données à la même feuille de calcul.
- Il remplace.
- Holtzman il est assez similaire. Mais la raison pour laquelle je suis à l'aide de deux requêtes est parce que je veux modifier la mise en forme de certaines des lignes entre ces 2 tables. Donc, mon idée était d'exportation de la première requête, modifier les lignes après la dernière ligne, ajouter de la deuxième requête.
- Si les deux requêtes sont de la même paramètres, pourriez-vous créer une table temporaire dans l'Accès qui a la première requête de l'UNION des lignes de la requête de l'UNION seconde requête? par exemple
SELECT name FROM tbl WHERE id Is Not Null UNION SELECT 'next dataset' FROM tbl UNION SELECT name FROM tbl WHERE id Is Null
- si vous transférez des deux requêtes avec le même nom, il écrase, s'ils ont des noms différents, ils seront écrits sur des feuilles de calcul distinctes nommé pour la requête, par exemple "requête1", "query2". J'ai récemment écrit à ce sujet sur DONC. Dans ce cas, je pense que l'automatisation serait le meilleur pari.
- Comme vous pouvez le voir à partir de tous les commentaires il y a plusieurs façons de contourner cela. Si tout ce que vous faites est de l'édition excel mise en forme, ne peut pas vous faire qu'après le transfert de la requête UNION? Ou, au pire, vous pouvez exporter des deux requêtes comme @Remou a suggéré, que faire de votre édition et la copie de la 2ème feuille après que, tout au XL objet.
- Je ne voudrais pas suggérer à un SYNDICAT. Il est chancy dans ce cas. Le tout peut être fait avec très peu d'automatisation.
- Quelques remarques: stackoverflow.com/questions/5043021/...
- J'ai fait le travail avec CopyFromRecordset. @StuckAtWork Vous me mettre sur la bonne voie avec qui forumlink donc, si vous répondez je peux marquer ton post comme une réponse. Merci à tous pour les réponses, je vais poster mon code dès que exemple. Remou Merci pour ce lien comme référence supplémentaire.
Vous devez vous connecter pour publier un commentaire.
Pour ma première requête-je utiliser
Pour la deuxième requête je l'ai mis dans un jeu d'enregistrements
Alors j'ai juste copier ce jeu d'enregistrements dans la feuille de calcul avec CopyFromRecordset.
objApp.ActiveSheet.UsedRange.Les lignes.Le comte sera de retour le dernier numéro de la rangée. J'ai ajouté + 2 parce que je veux une ligne vide entre les deux requêtes.
À ajouter, j'ai fait un performancetest. J'ai testé cette méthode avec 500.000 dossiers. La table contenant 500 lignes, la première requête contenant de 250 lignes, la deuxième requête (avec le OpenRecordSet) contenant 250 lignes. Il a fallu environ 10 secondes pour générer le fichier excel fiche et afficher les données sur un E6600 (2,40 Ghz), 4 go de ram de la machine avec access/excel 2010.
EDIT:
Une autre façon d'effectuer ce serait la même avec l'aide de Transférerfeuillecalcul 2 fois.
Cela va créer 2 Feuilles dans le classeur, puis il suffit de copier les données d'une feuille de calcul à l'autre. Je pense que le rendement sera le même, mais pas sûr, je m'en tiendrai à la OpenRecordSet.