Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : Access 2024, Access 2021
Cette rubrique explique comment un administrateur informatique peut exporter toutes les données et objets d’une base de données Microsoft Access vers des fichiers texte, ce qui permet une utilisation avec d’autres outils et prend en charge la portabilité des données.
Pour les données stockées dans les tableaux, les données peuvent être exportées vers divers autres formats à l’aide d’Assistants Access, tels qu’Excel, voir Exporter des données vers Excel, ou texte, voir Exporter des données vers un fichier texte.
Les instructions suivantes montrent comment exporter des objets à l’aide du code VBA, à l’aide de la commande de la méthode DoCmd.TransferText pour exporter des données de table et de la commande Application.SaveAsText pour d’autres objets.
Le code fourni crée une fonction qui peut être appelée avec le chemin complet d’une base de données et d’un dossier de destination. Il crée ensuite un fichier texte pour chaque objet de la base de données, qui contient les données des tables et les définitions de tous les objets créés par l’utilisateur, tels que les formulaires ou les états.
Étant donné que ce processus utilise OLE Automation, le code peut également être écrit à l’aide de PowerShell ou d’un langage .NET tel que C#. Pour cet exemple, nous utilisons VBA.
- Créez une nouvelle base de données.
- Créez un module.
- Copiez et collez le code de base de données d’exportation suivant dans le module.
- Pour chaque base de données que vous souhaitez exporter, entrez la commande suivante dans la fenêtre immédiate :
ExportAccessDatabase "_Full path to database_", "_Folder to contain exported objects_"
- Notez qu’un dossier sera créé dans le dossier cible avec le nom de la base de données exportée. Cela permet d’exporter plusieurs bases de données vers le même dossier cible tout en conservant le contenu de chaque base de données exportée dans un dossier distinct.
- Si la base de données à exporter contient un formulaire de démarrage ou une macro AutoExec, les actions de démarrage peuvent interférer avec le processus d’exportation. Vous devez donc réinitialiser la propriété Formulaire de démarrage de la base de données et supprimer ou renommer la macro AutoExec avant de tenter d’appeler ExportAccessDatabase.
- Si vous souhaitez automatiser davantage ce processus, vous pouvez écrire une fonction qui, en fonction du chemin d’accès à un dossier, énumère toutes les bases de données du dossier et appelle la fonction ExportAccessDatabase pour exporter chaque base de données Microsoft Access vers un dossier cible.
Exporter le code de base de données (VBA)
Option Compare Database
Option Explicit
' Pass in the location of the database to export, and the folder to export to
Sub ExportAccessDatabase(strDBPath As String, exportFolder As String)
Dim objAccess As Object
Dim db As Database
Dim td As TableDef
Dim qd As QueryDef
Dim doc As Document
Dim cont As Container
On Error GoTo Err_ExportDatabase
' Create a new instance of Access
Set objAccess = CreateObject("Access.Application")
' Open the database
objAccess.OpenCurrentDatabase strDBPath
' Create a new folder using the name of the database to hold all the exported objects if it does not already exist
exportFolder = exportFolder & Mid(strDBPath, InStrRev(strDBPath, "\"), InStr(strDBPath, ".") - InStrRev(strDBPath, "\")) & "\"
If Dir(exportFolder, vbDirectory) = "" Then
MkDir exportFolder
End If
Set db = objAccess.CurrentDb()
' Export all objects to export location with a name based on the type and name of the object
' Export Tables
For Each td In db.TableDefs
If Left(td.Name, 4) <> "MSys" Then ' Skip Microsoft Access system tables
objAccess.DoCmd.TransferText acExportDelim, , td.Name, exportFolder & "Table_" & td.Name & ".txt", True
End If
Next td
' Export Forms
For Each doc In db.Containers("Forms").Documents
objAccess.SaveAsText acForm, doc.Name, exportFolder & "Form_" & doc.Name & ".txt"
Next doc
' Export Reports
For Each doc In db.Containers("Reports").Documents
objAccess.SaveAsText acReport, doc.Name, exportFolder & "Report_" & doc.Name & ".txt"
Next doc
' Export Macros
For Each doc In db.Containers("Scripts").Documents
objAccess.SaveAsText acMacro, doc.Name, exportFolder & "Macro_" & doc.Name & ".txt"
Next doc
' Export Modules
For Each doc In db.Containers("Modules").Documents
objAccess.SaveAsText acModule, doc.Name, exportFolder & "Module_" & doc.Name & ".txt"
Next doc
' Export Queries
For Each qd In db.QueryDefs
' Skip Microsoft Access temporary queries
If Left(qd.Name, 3) <> "~sq" Then
objAccess.SaveAsText acQuery, qd.Name, exportFolder & "Query_" & qd.Name & ".txt"
End If
Next
objAccess.Quit
Set db = Nothing
Set cont = Nothing
Set objAccess = Nothing
MsgBox "Export complete to " & exportFolder, vbInformation
GoTo Exit_Sub
Err_ExportDatabase:
MsgBox Err.Number & ": " & Err.Description
Exit_Sub:
End Sub