Я хочу создать приложение Windows Forms, которое позволяет выводить все формы, отчеты и т. Д. c. в базе данных Microsoft Access 2019 в виде текстовых файлов. Я нашел код VBA (см. Ниже), который может сделать это из базы данных доступа (через форму), но вместо этого я хочу сделать это через интерфейс Windows Forms.
--- КОД VBA НАЧИНАЕТСЯ ---
On Error GoTo Err_DocDatabase
Dim dbs As Database
Dim cnt As Container
Dim doc As Document
Dim i As Integer
Dim iTemp As Integer
Set dbs = CurrentDb() ' use CurrentDb() to refresh Collections
Set cnt = dbs.Containers("Forms")
For Each doc In cnt.Documents
Application.SaveAsText acForm, doc.Name, "C:\Users\ron\Desktop\" & RemoveSpecialCharsFromString(doc.Name) & ".txt"
Next doc
Set cnt = dbs.Containers("Reports")
For Each doc In cnt.Documents
Application.SaveAsText acReport, doc.Name, "C:\Users\ron\Desktop\" & RemoveSpecialCharsFromString(doc.Name) & ".txt"
Next doc
Set cnt = dbs.Containers("Scripts")
For Each doc In cnt.Documents
Application.SaveAsText acMacro, doc.Name, "C:\Users\ron\Desktop\" & doc.Name & ".txt"
Next doc
Set cnt = dbs.Containers("Modules")
For Each doc In cnt.Documents
Application.SaveAsText acModule, doc.Name, "C:\Users\ron\Desktop\" & doc.Name & ".txt"
Next doc
For i = 0 To dbs.QueryDefs.Count - 1
Application.SaveAsText acQuery, dbs.QueryDefs(i).Name, "C:\Users\ron\Desktop\" & dbs.QueryDefs(i).Name & ".txt"
Next i
Set doc = Nothing
Set cnt = Nothing
Set dbs = Nothing
Exit_DocDatabase:
Exit Sub
Err_DocDatabase:
MsgBox Err.Description
Resume Exit_DocDatabase
--- КОД VBA ЗАКАНЧИВАЕТСЯ ---
Код, который я пробовал изначально, был следующим:
--- VB. NET НАЧАЛО КОДА ---
Dim oAccess As Access.Application
Dim sbModuleList As New StringBuilder
oAccess = New Access.ApplicationClass()
oAccess.OpenDatabase("C:\Users\ron\Desktop\" + sDBName)
For Each oReport As AccessObject In oAccess.CurrentProject.AllReports
sbModuleList.AppendLine(oReport.Name + " - " +oReport.DateCreated)
Next
--- VB. NET КОНЕЦ КОДА ---
Приложение Access. Объект .CurrentProject имеет свойства, после которых я хочу go (например, AllTables, AllForms, AllReports и т. Д. c.). Однако, хотя Access.Application.CurrentProject IsNot Nothing, я получаю сообщение об ошибке при попытке доступа к свойству AllTables. Мне нужно будет найти фактическое сообщение об ошибке, так как я сейчас не на том же компьютере, но я думаю, что это было что-то вроде «System.Runtime.InteropServices.COMException: 'Вы сделали недопустимый вызов функции.'».
При этом я просто попробовал тот же код на другом компьютере, и он отлично работает! Итак, я думаю, теперь возникает вопрос, почему код работает на одном компьютере, а на другом - нет?