【问题标题】:Updating closed Access database with Excel VBA使用 Excel VBA 更新封闭的 Access 数据库
【发布时间】:2019-01-14 22:06:25
【问题描述】:

我在 Excel 中有一个宏来删除 Access 中的表格。

有没有办法在不打开 Access 数据库的情况下做到这一点?

Set AppAcc = Nothing
Set AppAcc = New Access.Application                         
AppAcc.Visible = True

AppAcc.OpenCurrentDatabase "C:\MyStuff\MyDataBase.mdb"

AppAcc.DoCmd.SetWarnings False

With AppAcc        
   .DoCmd.OpenQuery "Delete_Query1"

   .DoCmd.OpenQuery "Delete_Query2"

   .DoCmd.OpenQuery "Delete_Query3"     
End With

AppAcc.DoCmd.SetWarnings True
AppAcc.Quit acQuitSaveNone

Set AppAcc = Nothing

【问题讨论】:

    标签: excel vba ms-access


    【解决方案1】:

    当然,有办法。由于 MS Access 是一个数据库,因此它可以像所有主要的 RDBMS(Oracle、SQL Server、Postgres 等)一样通过后端进行连接。下面演示了使用 ADO 的 ODBC/OLEDB 连接。然后,下面是您当前正在运行的带有 DAO 的替代版本,但可以在没有 Access.ApplicationDoCmd 调用的情况下这样做。

    即使没有安装 MS Access GUI(MS Office 应用程序),两者都应该可以工作。每次使用后期绑定。对于早期绑定,添加 VBA 引用 Microsoft ActiveX Data Objects #.# LibraryMicrosoft DAO #.# Object Library,然后修改 DimSet 语句。

    ADO

    Dim conn As Object
    
    Set conn = CreateObject("ADODB.Connection")
    
    ' WITH ODBC DRIVER
    conn.Open "DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=C:\MyStuff\MyDataBase.mdb;"
    
    ' WITH ODBC DSN
    'conn.Open "DSN=MS Access Database;DBQ=C:\MyStuff\MyDataBase.mdb;"
    
    ' WITH OLEDB PROVIDER
    'conn.Open "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=C:\MyStuff\MyDataBase.mdb;" 
    
    ' THREE WAYS TO CALL ACTION QUERIES
    conn.Execute "{CALL Delete_Query1}"
    conn.Execute "EXEC Delete_Query2"
    conn.Execute "Delete_Query3"
    
    Set conn = Nothing
    

    DAO

    Dim conn As Object, db As Object
    
    Set conn = CreateObject("DAO.DBEngine.120")
    Set db = conn.OpenDatabase("C:\MyStuff\MyDataBase.mdb")
    
    db.Execute "Delete_Query1"
    db.Execute "Delete_Query2"
    db.Execute "Delete_Query3"
    
    Set db = Nothing
    Set conn = Nothing
    

    【讨论】:

    • @Parfait.............非常感谢您提供这些信息。这非常有帮助,帮助我解决了我的问题。再次感谢.......
    • 太棒了。谢谢@ryguy72!
    猜你喜欢
    • 2015-09-07
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多