将 Microsoft Project 对象库导入 Excel VBA 项目

Posted

技术标签:

【中文标题】将 Microsoft Project 对象库导入 Excel VBA 项目【英文标题】:Importing Microsoft Project Object Library into Excel VBA Project 【发布时间】:2018-12-22 19:55:16 【问题描述】:

我有依赖 Microsoft Office Project Object Library 16.0 运行的 Excel VBA 代码。它在手动选择库时完美执行(通过转到工具 - > 参考并选中它)。我不希望我的用户必须选择项目库——事实上我宁愿他们完全远离 VBA 编辑器——所以我尝试使用它的 GUID 内联添加它。

对于库 GUID,我 foundA7107640-94DF-1068-855E-00DD01075445 分别使用主要和次要编号 4 和 9。然后我尝试在未选择库的情况下运行以下命令:

Sub testReference()
ThisWorkbook.VBProject.References.AddFromGuid GUID:="A7107640-94DF-1068- 
855E-00DD01075445", Major:=4, Minor:=9
Dim MP_App As MSProject.Application
Set MP_App = CreateObject("Msproject.Application")
Dim MP_Project As MSProject.Project
MP_App.Visible = True
MP_App.FileOpenEx Name:="C:\Users\Adam Wertheimer\Desktop\testProjectFile.mpp"
End Sub

除非它标记了该行

Dim MP_App As MSProject.Application

编译错误“未定义用户定义的类型”,所以要么没有正确添加库,要么我缺少其他东西。 我真的不希望所有用户都必须手动检查项目库,但如果我必须这样做,那就这样吧。任何建议/帮助将不胜感激。

【问题讨论】:

不能通过 VBE 的工具、参考资料添加库吗? @Jeeped,是的,我个人是这样做的,并且我的代码在手动选择时运行良好。问题是我可能有很多人使用我的宏(他们拥有不同数量的 VBA 知识),我不想强​​迫他们每个人都必须手动选择他们机器上的库。 如果您确定已正确添加库,只需使用 Dim MP_App As object 进行后期绑定。 CreateObject 将负责其余的工作。如果你想添加一个后期绑定的字典类,你不会导入这个库,只是作为对象变暗并创建对象。 @Jeeped 是的,你是对的。我正确导入了库(如我所想),因此“MSProject.Application”和“MSProject.Project”对象类型将被“Object”替换。谢谢! 这真是一个重复的问题。从您所写的内容来看,您可能错过了一些步骤。请参阅如何以编程方式添加引用。在您的情况下,您最好使用后期绑定。 【参考方案1】:

通过关联的 clsid guid 导入库引用不会立即授予对所有院系的访问权限。您可能需要隐藏一些直接引用。

Dim MP_App As object
Dim MP_Project As object

通过将 Microsoft Office Project 特定的变量声明为普通对象,您应该能够实例化一个准备好接受后期绑定 CreateObject 的变量。创建 MP_App 后,MP_Project 应该能够设置为其成员之一。

【讨论】:

以上是关于将 Microsoft Project 对象库导入 Excel VBA 项目的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle 插件Gradle 依赖管理 ⑨ ( implementation project 导入依赖库 Module | 导入aar文件作为依赖 | 先配置仓库再导入依赖 )

将导入的库链接到 CMake ExternalProject

如何将 MSAL(Microsoft Authentication Library for js)正确导入和使用到 typescript react 单页应用程序中?

导入库是如何工作的? [复制]

Microsoft Office Project 相关教程 收集

material design库怎么导入