Access / Project VBA - 实例化 MS Project Application 对象的自动化错误

Access / Project VBA - automation error instantiating MS Project Application object

更新 - 2016 年 1 月 20 日 - 我相信 post 由 @Alistair 编辑的答案是正确的,我正在努力验证。

自上次 post 以来,我尝试修复 Office 16 64 位环境。没用。

为了让它回到一个坚实的起点,我在我的常规 Windows 10 机器上降级到 Office 2013(32 位)。下面的代码按预期工作。接下来我将为 2016 年安装构建另一个 VM,看看 32 位版本的 Office 16 是否工作。

更新 - 1/19/2016 1658 PT - 我将探索让代码了解 64 位与 32 位环境。参见:https://msdn.microsoft.com/en-us/library/office/gg264421.aspx

如果这解决了问题,我将用解决方案更新这个问题。谢谢!

***** 原文 post 下面 ***************************

这是在 运行在 MS Access 中打开一个宏,该宏用于打开 MS Project 文件并将数据从 MS Project 任务导入到 Access。下面的代码是一个示例。我们得到的错误是在 Windows 10 & MS Office 2016 下。此错误不会发生在另一台机器 运行ning Windows 7 & Office 2013 上; MS Project 版本与 Office 版本一致。

当我尝试实例化 MSProject.Application 对象时出现自动化错误。错误是:

运行-时间错误'-2147467229 (80004023)':

自动化错误 遇到 Microsoft 软件安装程序错误

代码如下:

Option Compare Database
Option Explicit

Sub test01()
    Dim appMSProject As MSProject.Application
    On Error GoTo ErrorHandler
    '*** The next line is where we pop the error ***
    Set appMSProject = New MSProject.Application
    appMSProject.FileOpenEx Name:="C:\IMS\Project1.mpp"
    '*** next line is just so I can see if something odd is going on ***
    MsgBox (appMSProject.About())
    appMSProject.Quit SaveChanges:=pjDoNotSave
    Exit Sub
ErrorHandler:
    MsgBox ("Error Number: " & Err.Number & vbCrLf & _
            "Error Desc.: " & vbCrLf & _
            Err.Description)
    Exit Sub   
End Sub

有趣的是,在调试模式下,如果我删除 "New" 并返回到它,有时,它会 运行。

我们已尝试关闭登录项目服务器、项目到项目链接的提示,并将宏安全性设置为 Access 和 Project 的最低设置。我们还对不同的 .MPP 文件进行了尝试,以防文件损坏或可能不符合 MS Project 2016,这是一个很长的尝试,因为文件当然是在对象实例化之后打开的。

我也试过这个技巧:

Dim appMSProject As Object
...
Set appMSProject = CreateObject("MSProject.Application")

这会产生同样的错误。我什至从这里复制并粘贴了代码示例:https://msdn.microsoft.com/en-us/library/office/ff865152.aspx

这里有一个打开的开关是引用。我正在使用 Microsoft Project 16 对象库。 MSDN 文章指定了 Microsoft Project 15 Object Library。我试图找到更新的 MSDN 文章、规范、对象模型或适用于项目 16 的任何其他内容。没有乐趣。

虽然我在网上发现了一些非常普遍的自动化错误建议,但几乎所有这些示例在启动 Application 对象后都会出现问题,而不是在我遇到问题的时候。一般而言,MS Project VBA 的帮助也很少。当然,这是一个较小的社区。只是让你知道我看了。

我能想到的是,我缺少一种获取 Office 2016 / Project 2016 VBA 文档的方法,其中有一种实例化 MSProject.Application 对象的新技术。如果就这么简单,有人知道其中的奥秘URL,请传授一下。

提前致谢! -jd

我认为这是在您的计算机上安装 Microsoft Project 2016 时出现的问题。

我刚刚在装有 Access 2016 和 Project 2016 的机器上测试了您的代码,第一次成功。

我建议对 Project 和 Access 进行 repair install

您可以尝试安装 KB3114538。显然添加了一些 2016 VBA 对象属性,但不向后兼容旧版本。

确保 Project 和 Office 完全更新也可能很好。

罗德吉尔 项目 MVP

我今天在将Office 2016 32位升级到64位时遇到了同样的问题。我在 VBA 中的所有 Outlook 对象都失败了,导致消息 "Automation Error: a Microsoft software installer error was encountered." 我重命名了与 Outlook 关联的注册表项,在下一次调用时它显然被重建了,然后一切又开始工作了。更多信息在此 link:https://support.microsoft.com/en-us/help/828550/you-receive-run-time-error-429-when-you-automate-office-applications 我的情况不需要重新安装 Office。