web-dev-qa-db-fra.com

Exportez les tables MS Access via VBA vers une feuille de calcul Excel dans le même répertoire

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.

Cependant, de cette façon, l'utilisateur doit réellement taper le nom afin qu'il y ait de la place pour nommer le fichier ou pour 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 pouvoir faire est de faire un bouton sur un formulaire qui exporte automatiquement une table vers une feuille de calcul et l'autre vers une autre feuille de calcul, les deux 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 automatiquement exportés vers le même répertoire dans lequel ma base de données d'accès est enregistrée.

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

22
Matt

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 de classeur Excel avec la date actuelle, utilisez la méthode Format(Date, "yyyyMMdd").

Enfin, pour exporter le tableau 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

Cela produira à la fois Table1 et Table2 dans le même classeur.

HTH

39
Lawrence P. Kelley

Lawrence vous a donné une bonne réponse. Mais si vous voulez plus de contrôle sur ce qui est exporté vers où dans Excel, voir Modules: exemple d'Excel Automation - cellule par cellule qui est lente et Modules: transfert d'enregistrements vers Excel avec Automation Vous pouvez effectuer des opérations 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 toute mise en forme personnalisée requise.

7
Tony Toews