访问VBA对象模型,我看不到任何选项来启用Microsoft Access中的VBA对象模型,因为这打印屏幕上:连接到从Excel
从Excel中我可以在同见选项对话窗口:
我知道下面的工作正常访问VBA对象模型工作
Public strAllCode As String Public Sub StringAllLines() Dim accObj As AccessObject 'Each module/form/report. Dim bWasOpen As Boolean 'Flag to leave form/report open if it was open. Dim strDoc As String 'Name of each form/report 'Stand-alone modules. For Each accObj In CurrentProject.AllModules Call GetModuleLines(accObj.Name, True) Next 'Modules behind forms. For Each accObj In CurrentProject.AllForms strDoc = accObj.Name bWasOpen = accObj.IsLoaded If Not bWasOpen Then DoCmd.OpenForm strDoc, acDesign, WindowMode:=acHidden End If If Forms(strDoc).HasModule Then Call GetModuleLines("Form_" & accObj.Name, False) End If If Not bWasOpen Then DoCmd.Close acForm, strDoc, acSaveNo End If Next 'Modules behind reports. For Each accObj In CurrentProject.AllReports strDoc = accObj.Name bWasOpen = accObj.IsLoaded If Not bWasOpen Then 'In Access 2000, remove the ", WindowMode:=acHidden" from the next line. DoCmd.OpenReport strDoc, acDesign, WindowMode:=acHidden End If If Reports(strDoc).HasModule Then Call GetModuleLines("Report_" & accObj.Name, False) End If If Not bWasOpen Then DoCmd.Close acReport, strDoc, acSaveNo End If Next Dim intFile As Integer '*** Set to next free open number *** intFile = FreeFile() Open "c:\temp\AllCode.txt" For Output As #intFile Print #intFile, strAllCode Close #intFile End Sub Private Function GetModuleLines(strModule As String, bIsStandAlone As Boolean) Dim bWasOpen As Boolean 'Flag applies to standalone modules only. Dim lngLineNo As Long If bIsStandAlone Then bWasOpen = CurrentProject.AllModules(strModule).IsLoaded End If If Not bWasOpen Then DoCmd.OpenModule strModule End If strAllCode = strAllCode & "**********" & vbCrLf strAllCode = strAllCode & strModule & vbCrLf strAllCode = strAllCode & "**********" & vbCrLf For lngLineNo = 1 To Modules(strModule).CountOfLines strAllCode = strAllCode & Right(" " & lngLineNo, 5) & ": " & Modules(strModule).Lines(lngLineNo, 1) & vbCrLf Next strAllCode = strAllCode & vbCrLf & vbCrLf & vbCrLf If Not bWasOpen Then On Error Resume Next DoCmd.Close acModule, strModule, acSaveNo End If Debug.Print strModule & " complete" DoEvents End Function
以上只是一个代码示例,允许将所有模块和对象名称从Access中导出到文本文件。
我想从Excel中执行它,换句话说,Excel中的vba宏打开Access数据库并将每个对象的名称和类型(表格,表格,查询,报告,vba模块...)文本文件,然后关闭数据库。这可以做到吗?
的reference的代码发布
我想宏从Excel运行并保持Access文件不变,谢谢 – pascalb