代码之家  ›  专栏  ›  技术社区  ›  ASH

尝试从运行Access宏

  •  0
  • ASH  · 技术社区  · 7 年前

    Sub RunAccessMacro()
        Dim strDatabasePath As String
        Dim PathToDB As String
        Dim db As DAO.Database
        Dim rs As DAO.Recordset
    
        PathOfDatabase = ThisWorkbook.Worksheets("Updates").Range("PathToAccess")
    
        Set db = DAO.DBEngine.OpenDatabase(PathOfDatabase)
        Set qry = db.Execute("Macro_Run_Key")
    
        qry.Close
        db.Close
    
        MsgBox "Done!  All processes complete!!"
    
    End Sub
    

    enter image description here

    一定有办法做到这一点,对吗。

    3 回复  |  直到 4 年前
        1
  •  2
  •   Erik A    7 年前

    数据库引擎只做数据库事情(任何关于表和查询的事情)。如果您想要更多,则必须通过VBA使用Access应用程序:

    Sub RunAccessMacro()
        Dim strDatabasePath As String
        Dim PathToDB As String
        Dim accApp As Access.Application
        Set accApp = New Access.Application
    
    
    
        PathOfDatabase = ThisWorkbook.Worksheets("Updates").Range("PathToAccess")
        accApp.OpenCurrentDatabase PathOfDatabase
        accApp.DoCmd.RunMacro "Macro_Run_Key"
        accApp.Quit
        Set accApp = Nothing
    
    
        MsgBox "Done!  All processes complete!!"
    
    End Sub
    

    此外,您需要添加对Microsoft Access对象库的引用,或者可以修改此代码以使用后期绑定。

        2
  •  1
  •   Scott Holtzman    7 年前

    设置对Access对象库的引用是无用的 除非你真的用它 DAO 哪种动物和叫声不同 Access 直接通过对象库。DAO严格来说是一个数据库引擎(像ADO),不知道宏和模块,例如在Office应用程序中定义的宏和模块。

    以下是使用早期绑定时要使用的代码:

    Sub RunAccessMacro()
    
        Dim PathOfDatabase As String
        PathOfDatabase = ThisWorkbook.Worksheets("Updates").Range("PathToAccess")
    
        Dim accApp As Access.Application
        Set accApp = New Access.Application
    
        With accApp
    
            .OpenCurrentDatabase PathOfDatabase
            .DoCmd.RunMacro "Macro_Run_Key"
            .Quit
    
        End With
    
        MsgBox "Done!  All processes complete!!"
    
    End Sub
    
        3
  •  0
  •   AdzzzUK    7 年前

    如果宏是Access宏,则实际上可以使用单个命令触发宏,而无需四处走动。X命令行开关将有助于-检查此链接: How can I schedule a Macro to run automatically in Access 2007