При открытии этого документа произошла ошибка.Неверный объект действия - PullRequest
0 голосов
/ 14 декабря 2018

Я пишу подпрограмму в 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 голосов
/ 28 декабря 2018

Я получил это работает сейчас.Я перестал объявлять объекты как новые.(Спасибо Матье.) Я нашел другой пост;что продемонстрировало их объявление после создания объекта;и сделал это.

Я также запустил 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
0 голосов
/ 14 декабря 2018

Возможно ли, что функция должна быть записана как ...

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

... просто предложение.

...