Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: Access 2024, Access 2021
В этом разделе объясняется, как ИТ-администратор может экспортировать все данные и объекты из базы данных Microsoft Access в текстовые файлы, что позволяет использовать с другими средствами и поддерживает перенос данных.
Для данных, хранящихся в таблицах, данные можно экспортировать в различные другие форматы с помощью мастеров доступа, таких как Excel. См . статью Экспорт данных в Excel или текст, см. статью Экспорт данных в текстовый файл.
В следующих инструкциях показано, как экспортировать объекты с помощью кода VBA, команды метода DoCmd.TransferText для экспорта табличных данных и команды Application.SaveAsText для других объектов.
Предоставленный код создаст функцию, которую можно вызвать с полным путем к базе данных и целевой папке. Затем он создаст текстовый файл для каждого объекта в базе данных, который будет содержать данные из таблиц и определения всех созданных пользователем объектов, таких как формы или отчеты.
Так как в этом процессе используется автоматизация OLE, код также можно написать с помощью PowerShell или языка .NET, например C#. В этом примере используется VBA.
- Создайте новую базу данных.
- Создайте новый модуль.
- Скопируйте и вставьте следующий код экспортируемой базы данных в модуль.
- Для каждой базы данных, которую требуется экспортировать, введите следующую команду в окне интерпретации:
ExportAccessDatabase "_Full path to database_", "_Folder to contain exported objects_"
- Обратите внимание, что в целевой папке будет создана новая папка с именем экспортируемой базы данных. Это позволяет экспортировать несколько баз данных в одну целевую папку, сохраняя содержимое каждой экспортируемой базы данных в отдельной папке.
- Если экспортируемая база данных содержит форму запуска или макрос AutoExec, действия при запуске могут помешать процессу экспорта, поэтому необходимо сбросить свойство Startup Form для базы данных, а затем удалить или переименовать макрос AutoExec перед вызовом ExportAccessDatabase.
- Если вы хотите автоматизировать этот процесс, можно написать функцию, которая, учитывая путь к папке, перечисляет все базы данных в папке и вызывает функцию ExportAccessDatabase для экспорта каждой базы данных Microsoft Access в целевую папку.
Экспорт кода базы данных (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