【问题标题】:Excel VBA code for searching PDF in Adobe Acrobat用于在 Adob​​e Acrobat 中搜索 PDF 的 Excel VBA 代码
【发布时间】:2017-09-27 02:52:41
【问题描述】:

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

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

我在 Adob​​e 的文档中找不到答案。选择整个文档并搜索字符串的正确语法是什么?

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

【问题讨论】:

  • “一个错误”,是什么?
  • @Masoud 运行时错误“450”:参数数量错误或属性分配无效

标签: vba excel pdf acrobat


【解决方案1】:

Acrobat 没有范围的概念。 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

【讨论】:

  • 它停在 acroDoc.Open 行。它给了我一个运行时错误“450”:参数数量错误或属性分配无效。您的代码与 SDK 文档匹配,所以我不确定是什么搞砸了。
  • Open和paren后面应该有空格吗?这可能是我的错字。
  • 是的,应该有一个空格。 VBA 自动更正代码以包含空格。
  • acroDoc.Open ("C:\Documents\example.pdf","") 应该这样做。
  • 不走运。 acroDoc.Open("C:\Documents\example.pdf","") 返回语法错误
猜你喜欢
  • 2014-09-29
  • 2018-12-06
  • 2022-12-29
  • 2019-01-20
  • 1970-01-01
  • 1970-01-01
  • 2012-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多