将当前数据库外部的宏转换为 VBA

Converting Macros to VBA from Outside Current Database

我想要一种以编程方式将 Access 宏转换为 VBA 模块的方法。我知道如何手动执行此操作。我正在使用一些代码在当前数据库中执行此操作,并且我让它工作了。但是,我希望能够在当前数据库之外执行此操作。我计划将此程序与其他实用程序类型的程序放在同一个数据库中。下面是我的代码。我收到一条消息,内容为“Microsoft Access 找不到您在对象名称争论中引用的 test1。对于如何实现我想要实现的目标,您有什么建议吗?

Private Sub Command2_Click()
MsgBox "start here"
Dim strDB As String
Dim appAccess As Access.Application
Dim m As Object

strDB = "C:\Users\me\Desktop\testme.accdb"

Set appAccess = New Access.Application
appAccess.OpenCurrentDatabase strDB

For Each m In appAccess.CurrentProject.AllMacros

    Debug.Print m.Name
    DoCmd.SelectObject acMacro, m.Name, True
    DoCmd.RunCommand acCmdConvertMacrosToVisualBasic

Next

Set appAccess = Nothing

End Sub

DoCmdApplication 对象的成员。要求这些命令从您创建的新 Application 对象实例 (appAccess) 开始工作,而不是 运行 您的 [=23] 的 Application 实例=]Command2_Click() 程序.

appAccess.DoCmd.SelectObject acMacro, m.Name, True
appAccess.DoCmd.RunCommand acCmdConvertMacrosToVisualBasic

换句话说,基本上对 DoCmd 执行与对 appAccess.OpenCurrentDatabaseappAccess.CurrentProject 相同的操作...您将它们关联到特定的 Application 实例。