【发布时间】:2018-12-22 19:55:16
【问题描述】:
我有依赖 Microsoft Office Project Object Library 16.0 运行的 Excel VBA 代码。它在手动选择库时完美执行(通过转到工具 - > 参考并选中它)。我不希望我的用户必须选择项目库——事实上我宁愿他们完全远离 VBA 编辑器——所以我尝试使用它的 GUID 内联添加它。
对于库 GUID,我 found{A7107640-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”替换。谢谢!
-
这真是一个重复的问题。从您所写的内容来看,您可能错过了一些步骤。请参阅如何以编程方式添加引用。在您的情况下,您最好使用后期绑定。
标签: excel vba ms-project