用于在Adobe Acrobat中搜索PDF的Excel VBA代码

时间:2017-04-28 22:00:30

标签: vba excel-vba pdf acrobat excel

我想在PDF文件中搜索字符串并打印计数的实例数。我已经为Word,Excel和Powerpoint做了这个,但从来没有使用过Acrobat。当我调用acroDoc.Range时出错,所以我认为这是Acrobat的错误语法。

  

运行时错误' 450':参数数量错误或属性分配无效。

我无法在Adobe的文档中找到答案。选择整个文档和搜索字符串的正确语法是什么?

Sub pdfSearch()

Dim acroApp As Object
Dim acroDoc As Object
Dim aRng As Object
Dim i As Integer

i = 0
Set acroApp = CreateObject("AcroExch.App")
Set acroDoc = CreateObject("AcroExch.pddoc")
acroDoc.Open ("C:\Documents\example.pdf")
Set aRng = acroDoc.Range
With aRng.Find
    Do While .Execute(FindText:="desk", MatchCase:=False)
        i = i + 1
    Loop
End With
acroDoc.Close 0
Set aRng = Nothing
Set acroDoc = Nothing
Set acroApp = Nothing
Debug.Print (i)

End Sub

1 个答案:

答案 0 :(得分:0)

Acrobat没有Range的概念。 FindText查找指定的文本,滚动以使其可见,并突出显示它。找到文本时返回值为-1。除非您还传递一个参数来重置选择,否则后续调用将从您离开的位置开始,以便获得计数,您只需循环直到返回值不是-1。我有很长一段时间没有使用过VAB,但我认为代码看起来像这样......

i = 0
Set acroApp = CreateObject("AcroExch.App")
Set acroDoc = CreateObject("AcroExch.AVDoc")
acroDoc.Open ("C:\Documents\example.pdf")
Do While acroDoc.FindText("desk",0) == -1
    i = i + 1
Loop

FindText的文档: http://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FIAC_API_OLE_Objects%2FFindText.htm