【发布时间】:2021-06-08 00:50:21
【问题描述】:
我正在编写一个允许用户将 PDF 插入工作表的宏。问题是不同的人有不同版本的 Adobe。此代码适用于我的机器:
ActiveSheet.OLEObjects.Add(ClassType:="Acrobat.Document.DC", Link:=False, DisplayAsIcon:=False).Activate
但是该代码会在别人的机器上产生错误,因为他需要这个:
ActiveSheet.OLEObjects.Add(ClassType:="AcroExch.Document.DC", Link:=False, DisplayAsIcon:=False).Activate
请注意 ClassTypes 是不同的。有没有办法检查 ClassType 是否存在?我想做这样的事情:
If Exists(ClassType("Acrobat.Document.DC")) Then
ActiveSheet.OLEObjects.Add(ClassType:="Acrobat.Document.DC", Link:=False, DisplayAsIcon:=False).Activate
Else
ActiveSheet.OLEObjects.Add(ClassType:="AcroExch.Document.DC", Link:=False, DisplayAsIcon:=False).Activate
End If
注意:我可以通过使用 On Resume Error Next 来强制执行此操作,但这似乎不是最干净的方法。
【问题讨论】:
-
这是最干净的方式。在编程中,我们尝试并测试是否成功。 COM 期待这一点