打开此文档时出错。无效的操作对象

时间:2018-12-14 19:05:48

标签: excel vba excel-vba acrobat

我正在VBA中编写一个子例程,以显示PDF文档中的页面数。这是我的代码(来自我的模块):

Sub PDF_Num_Pages()
   Dim tCount As Long
   Dim objAVDoc As New AcroAVDoc
   Dim objPDDoc As New AcroPDDoc
   Dim objPage As AcroPDPage
   Dim objSelection As AcroPDTextSelect
   Dim objHighlight As AcroHiliteList
   Dim pageNum As Long
   Dim strText As String

   objAVDoc.Open "C:\<path to my file>\simple1.pdf", ""
   Set objPDDoc = objAVDoc.GetPDDoc
   MsgBox objPDDoc.GetNumPages()

End Sub

运行脚本时,将打开Adobe Acrobat Reader。然后从Adobe Acrobat出现错误:
There was an error opening this document. Invalid action object.

我单击“确定”。该框消失。

然后在Excel中,出现我的消息框,显示-1。

PDF的长度为1页,因此应该显示1。

Tools->References中,我已选中Adobe Acrobat 10.0 Type Library

在我的Adobe Acrobat文档(simple1)中,启用了安全功能。当我双击它时,我不再有“启用所有功能”选项。它会自动打开。

我可能做错了什么?

2 个答案:

答案 0 :(得分:0)

该函数是否应该写为...

objAVDoc.Open("C:\<path to my file>simple1.pdf", "")

...只是一个建议。

答案 1 :(得分:0)

我现在开始工作了。我不再声明这些对象为新对象。 (感谢Mathieu。)我找到了另一个帖子;在创建对象后演示了声明它们;并做到了。

我还运行了Adobe Acrobat,并进行了一些PDF转换(我想知道那是否可能在我的机器上设置了以前未完全设置的内容)。我也为Adobe Acrobat进行了“修复”。

Windows重新启动可能也有所帮助。这是工作代码:

Sub PDF_Num_Pages()
   Dim myApp As Acrobat.AcroApp
   Dim objAVDoc As Acrobat.AcroAVDoc
   Dim objPDDoc As Acrobat.AcroPDDoc

   ' create an automation object that references the active copy of Acrobat
   Set myApp = CreateObject("AcroExch.App")
   ' reference the acrobat document we loaded above
   Set objAVDoc = CreateObject("AcroExch.AVDoc")

   objAVDoc.Open "C:\<pdf path>simple1.pdf", ""
   Set objPDDoc = objAVDoc.GetPDDoc
   MsgBox objPDDoc.GetNumPages()

End Sub