如何用VBA实现打开PDF并查询数据,获取页码,或是提取该页面为新文件?

怎样使用VBA实现打开PDF并查询指定内容,获取该页的页码,最好是提取该页码存为新文件。

 打开pdf文档,查找到指定字符串,然后插入书签

以下代码先设置一个待查找字符串,用findtext方法查找,然后用createchild方法插入书签。代码的运行环境为Win8.1,Word2010 VBA,Acrobat Pro DC,在本机测试成功。

使用到的主要方法为AVDoc.FindText和BookMark.createChild。

AVDoc.FindText有4个参数:

    szText,要查找的字符串

    bCaseSensitive,是否区分大小写,正数为区分,0为不区分

    bWholeWordsOnly,是否匹配整个单词,正数为匹配,0为不匹配

    bReset,查找开始的位置,正数则从第一页开始,0则从当前页开始

    BookMark.createChild有3个参数

    cName,用户在导航面板中看到的书签的名称。

    cExpr,单击书签时要执行的表达式,为JavaScript

    nIndex,(可选)在书签的子数组中,创建新子书签的基于0的索引。默认值为0。

    Sub Pdf添加书签()

    '为某书添加书签
    Dim App As New Acrobat.AcroApp
    Dim PDoc As New Acrobat.AcroPDDoc, AVDoc As New Acrobat.AcroAVDoc
    Dim Jso As Object
    Dim BMark As Object '不能声明为Acrobat.AcroPDBookmark,否则createchild方法不可用。
    Dim PFile As String, WordTF As String, PageNum As Long

    PFile = "F:\指定文件.pdf" '要插入书签的pdf文件
    WordTF = "要查找的"

    If PDoc.Open(PFile) Then
    Set Jso = PDoc.GetJSObject
    Set AVDoc = PDoc.OpenAVDoc("")  '获得一个可见文档
    Jso.bookmarkroot.Remove '移除原有的所有书签
    End If

    If AVDoc.FindText(WordTF, 0, 0, 1) Then '从第一页开始,如果找到了字符串WordTF一次
    PageNum = AVDoc.GetAVPageView.GetPageNum '获得当前页码
    Set BMark = Jso.bookmarkroot '设置书签根对象
    BMark.createChild WordTF, "this.pageNum=" & PageNum, 0 '创建一个书签
    PDoc.Save 1, PFile
    End If

    PDoc.Close
    App.CloseAllDocs
    App.Hide
    App.Exit
    Set AVDoc = Nothing
    Set PDoc = Nothing
    Set App = Nothing
    Set BMark = Nothing
    Set Jso = Nothing
    End Sub

温馨提示:答案为网友推荐,仅供参考