我正在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)中,启用了安全功能。当我双击它时,我不再有“启用所有功能”选项。它会自动打开。
我可能做错了什么?
答案 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