首页 > 解决方案 > 使用PDFtk获取pdf文件的页数和文件名并写入excel

问题描述

我是新成员,我会尽最大努力做到具体、清晰并尊重成员的时间。我是 VBA 的初学者,需要你的帮助。

我正在使用 PDFtk 程序的免费版本,它通过图形界面显示有关 pdf 文件的信息(您可以看到所附图片)。

PDFtk

该程序为每个 pdf 文件显示 2 种类型的信息:

  1. 文件名
  2. 页数

但是,我正在寻找一个 VBA 宏,它将检索该信息(文件名、页数),然后将其写入 excel 中打开的工作簿。

重要的是 VBA 将在我的计算机 c:\temp 的特定位置搜索 pdf 文件

然后写到excel这样的东西:

Excel 文件名和页数

换句话说,需要一个 VBA 可以在不“真正”打开图形界面的情况下完成这项工作,但使用 PDFtk 应用程序来获取正确的页数。

在此先感谢您的帮助

标签: excelvbapdftk

解决方案


试试这个(来源:链接

Sub Test()
    Dim I As Long
    Dim xRg As Range
    Dim xStr As String
    Dim xFd As FileDialog
    Dim xFdItem As Variant
    Dim xFileName As String
    Dim xFileNum As Long
    Dim RegExp As Object
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    If xFd.Show = -1 Then
        xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
        xFileName = Dir(xFdItem & "*.pdf", vbDirectory)
        Set xRg = Range("A1")
        Range("A:B").ClearContents
        Range("A1:B1").Font.Bold = True
        xRg = "File Name"
        xRg.Offset(0, 1) = "Pages"
        I = 2
        xStr = ""
        Do While xFileName <> ""
            Cells(I, 1) = xFileName
            Set RegExp = CreateObject("VBscript.RegExp")
            RegExp.Global = True
            RegExp.Pattern = "/Type\s*/Page[^s]"
            xFileNum = FreeFile
            Open (xFdItem & xFileName) For Binary As #xFileNum
                xStr = Space(LOF(xFileNum))
                Get #xFileNum, , xStr
            Close #xFileNum
            Cells(I, 2) = RegExp.Execute(xStr).Count
            I = I + 1
            xFileName = Dir
        Loop
        Columns("A:B").AutoFit
    End If
End Sub

推荐阅读