更新 - 1/20/2016 - 我相信@Alistair发布的答案是正确的,我正在努力验证。
自从我上一篇文章以来,我尝试修复Office 16 64位环境。没用。
为了使其回到坚实的起点,我已经在我的常规Windows 2013机器上降级到Office 2013(32位)。下面的代码按预期工作。接下来,我将为 2016 安装构建另一个 VM,并查看 Office 16 的 32 位版本是否正常工作。
更新 - 1/19/2016 1658 PT - 我将探索使代码知道 64 位与 32 位环境。请参阅:https://msdn.microsoft.com/en-us/library/office/gg264421.aspx
如果这解决了问题,我将使用解决方案更新此问题。谢谢!
******下面的原始帖子
******这是在MS Access中运行宏时,该宏将打开MS Project文件并将数据从MS Project任务导入Access。下面的代码是一个示例。我们得到的错误是在Windows 10和MS Office 2016下。此错误不会在运行 Windows 7 和 Office 2013 的另一台计算机上发生;MS 项目版本与 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:IMSProject1.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
有趣的是,在调试模式下,如果我删除"新建"并重新进入它,有时它会运行。
我们尝试关闭登录到项目服务器、项目到项目链接的提示,并将宏安全性设置为 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项目 16 对象库。MSDN 文章指定Microsoft项目 15 对象库。我试图找到更新的 MSDN 文章、规范、对象模型或适用于项目 16 的任何其他内容。没有快乐。
虽然我在网上找到了一些非常通用的自动化错误建议,但几乎所有这些示例在启动应用程序对象后都遇到了问题,而不是在我遇到问题的时候。一般来说,对 MS 项目 VBA 的帮助也很少。当然,这是一个较小的社区。只是让你知道我看了。
我所能想到的是,我缺少一种获取Office 2016/Project 2016 VBA文档的方法,并且有一种用于实例化MSProject.Application对象的新技术。如果它这么简单,并且有人知道魔术 URL,请传递它。
提前感谢您! - 京东
我认为这是在您的计算机上安装Microsoft Project 2016的问题。
我刚刚在一台装有 Access 2016 和 Project 2016 的机器上测试了您的代码,它第一次工作。
我建议在项目和可能的访问上进行修复安装。
尝试安装KB3114538。显然,添加了一些 2016 VBA 对象属性,但与旧版本不向后兼容。
确保项目和办公室完全更新也可能很好。
罗德吉尔项目最有价值产品价值
今天在将Office 2016 32位升级到64位时遇到了同样的问题。我在 VBA 中的所有 Outlook 对象都失败了,导致消息"自动化错误:遇到Microsoft软件安装程序错误"。我重命名了与Outlook关联的注册表项,在下一次调用时,它显然已重建,然后一切又开始工作。此链接中的更多信息: https://support.microsoft.com/en-us/help/828550/you-receive-run-time-error-429-when-you-automate-office-applications在我的情况下,无需重新安装 Office。