从VB.net在Access 2016中运行宏

时间:2017-10-26 15:20:02

标签: vb.net macros office365 ms-access-2016

我有一个用VB.net编写的桌面应用程序,它在访问中运行宏。最近我们从办公室2010升级到办公室365.现在,当我运行此应用程序时,我收到此错误:

出现异常 Error Image

  

无法加载文件或程序集' Microsoft.Office.Interop.Acces.Dao,Version = 15.0.0.0 ...'或其中一个依赖'

以下是导致异常的代码:

If _accessApp Is Nothing Then
        _accessApp = New Application

    End If


    Try
        If JobFolderPath.Length <= 0 Or JobFolderPath Is Nothing Then
            Exit Sub
        End If
        If _accessApp.CurrentDb() Is Nothing Then

            _accessApp.OpenCurrentDatabase(JobFolderPath & "somedb.mdb", False)
            _accessApp.Run("SomeProcess")

        Else
            _accessApp.Run("SomeProcess")
        End If
        _accessApp.Quit(AcQuitOption.acQuitSaveNone)

    Catch ex As Exception

    Finally
        _accessApp = Nothing
    End Try

我甚至在项目的参考文献中包括了Interop.Access.Dao verion 15 dll。不确定这种运行宏的方式在访问16中是否已经过时。如果是这样,这样做的正确方法是什么?

提前致谢。

3 个答案:

答案 0 :(得分:0)

该错误还表示&#34;或其中一个依赖项&#34;,从下面的链接安装互操作。

https://www.nuget.org/packages/Microsoft.Office.Interop.Excel/15.0.4795.1000

点击右边的#34;手动下载...

答案 1 :(得分:0)

不是您问题的答案,但可以在没有late binding的访问引用的情况下运行宏:

Dim accObj = GetObject(JobFolderPath & "somedb.mdb")    ' opens the file if not already open
accObj.Application.Run("SomeProcess")            ' the .Application part might not be needed
accObj.Application.Quit(2)                                 ' AcQuitOption.acQuitSaveNone = 2

command line switches(也未经过测试):

Process.Start(JobFolderPath & "somedb.mdb" "/x SomeProcess")

答案 2 :(得分:0)

最后,我能够通过安装&#39; microsoft office 16.0 access数据库引擎&#39;(32位版本)并将所需的dll添加为COM引用而不是正常的dll引用来修复它。