2009-12-04 8 views
16

J'ai deux tables dans ma base de données d'accès que je veux pouvoir exporter vers Excel. Je peux le faire en ouvrant la table puis en faisant Fichier-> Exporter ... puis en choisissant le format et en tapant le nom du fichier.Exporter des tables MS Access via VBA vers une feuille de calcul Excel dans le même répertoire

Cependant, de cette manière, l'utilisateur doit entrer le nom pour qu'il soit possible de mal interpréter le fichier ou de l'enregistrer au mauvais format ou au mauvais endroit. En outre, les deux tables doivent être exportées vers deux classeurs distincts.

Ce que je veux être en mesure de faire est de faire un bouton sur une forme qui exporte automatiquement une table à une feuille de calcul et l'autre à une autre feuille de calcul, aussi bien dans le même classeur Excel.

Si les mettre dans le même classeur n'est pas possible, c'est bien. Je veux juste qu'ils soient exportés automatiquement dans le même répertoire que ma base de données d'accès est enregistrée.

Si vous savez comment faire, un avantage supplémentaire pourrait être de personnaliser le nom pour inclure la date. De cette façon, le répertoire aurait aussi des exportations historiques. Aucun conseil?

Répondre

32

Vous pouvez utiliser VBA pour exporter une table de base de données Access en tant que feuille de calcul dans un classeur Excel.

Pour obtenir le chemin de la base de données Access, utilisez la propriété CurrentProject.Path.

Pour nommer le fichier classeur Excel avec la date actuelle, utilisez la méthode Format(Date, "yyyyMMdd").

Enfin, pour exporter la table en tant que feuille de calcul, utilisez la méthode DoCmd.TransferSpreadsheet.

Exemple:

Dim outputFileName As String 
outputFileName = CurrentProject.Path & "\Export_" & Format(Date, "yyyyMMdd") & ".xls" 
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Table1", outputFileName , True 
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Table2", outputFileName , True 

Affichera Table1 et Table2 dans le même classeur.

HTH

+0

Cela a fonctionné très bien, mais comment puis-je le forcer à exporter vers CurrentProject.Path? – Matt

+3

outputFileName = CurrentProject.Path & "\ Export_" & Format (Date, "YYYYDDmm") & ".xls" – Fionnuala

+1

Dans le code proposé, vous le forcez à enregistrer le fichier dans le chemin actuel en incluant le chemin lorsque vous affectez le valeur à la variable outputFileName. C'est-à-dire, coller CurrentProject.Path entre le = et le "et mettre un \ après la citation (CurrentProject.Path omet la barre oblique finale) –

7

Lawrence vous a donné une bonne réponse. Mais si vous voulez plus de contrôle sur ce qui est exporté là où dans Excel voir Modules: Sample Excel Automation - cellule par cellule qui est lente et Modules: Transferring Records to Excel with Automation Vous pouvez faire des choses telles que l'exportation du jeu d'enregistrements à partir de la ligne 2 et insérer du texte personnalisé dans la ligne 1. Ainsi que formatage personnalisé requis.

-4

Pour les personnes qui trouvent cela via les moteurs de recherche, vous n'avez pas besoin de VBA. Vous pouvez juste:

1.) select the query or table with your mouse 
2.) click export data from the ribbon 
3.) click excel from the export subgroup 
4.) follow the wizard to select the output file and location. 
+0

Ceci n'est pas une solution valide si vous offrez ce système en tant qu'application utilisateur/système de reporting – MattE