excel - 使用PDFtk获取pdf文件的页数和文件名并写入excel
问题描述
我是新成员,我会尽最大努力做到具体、清晰并尊重成员的时间。我是 VBA 的初学者,需要你的帮助。
我正在使用 PDFtk 程序的免费版本,它通过图形界面显示有关 pdf 文件的信息(您可以看到所附图片)。
该程序为每个 pdf 文件显示 2 种类型的信息:
- 文件名
- 页数
但是,我正在寻找一个 VBA 宏,它将检索该信息(文件名、页数),然后将其写入 excel 中打开的工作簿。
重要的是 VBA 将在我的计算机 c:\temp 的特定位置搜索 pdf 文件
然后写到excel这样的东西:
换句话说,需要一个 VBA 可以在不“真正”打开图形界面的情况下完成这项工作,但使用 PDFtk 应用程序来获取正确的页数。
在此先感谢您的帮助
解决方案
试试这个(来源:链接)
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
推荐阅读
- kotlin - 在条件下切换可观察
- c# - 更新值时用户控件绑定丢失,标准文本框控件不会发生这种情况
- android - Android - 存储和加载存储在网络上的图像文件夹
- mysql - 返回购买日期在注册日期后 7 天内的所有结果
- javascript - Why does my setTimeout not stop when I clear?
- c++ - std::atomic_flag 初始化结果
- jmeter - Jmeter中HTTP请求中的参数和正文数据有什么区别?
- html - 需要帮助找到在数据表中应用 css 样式的正确位置
- java - 如何使用 jersey 客户端获取“jsessionid”?
- payment-gateway - CCAvenue 是否允许在 2 个不同的域上使用支付网关?