【VBA教程】批量将PDF转为Excel/PPT/图片/TXT(建议收藏)

文摘   教育   2024-09-23 19:50   广东  
之前我们分享了如何使用VBA将PDF转为word,然后就有小伙伴问了,能不能批量将PDF转为Excel呢?答案是可以的,今天我们就来学学如何将PDF转为Excel、PPT、图片、以及TXT文档。
其实,我们转其他格式也和转Word差不多的,还没看过如何批量转word文档的,可以去看看下面这篇文章
【VBA教程】批量将PDF转为Word
如下图所示,有两个PDF文档,我们要对他们进行批量转换,下面,我们来看看代码

一、PDF转Excel


Sub pdfToExcel()Dim acroapp As Object, acroAVDoc As Object, acroPDDoc As Object, jsobj As ObjectDim filePath, savePath As StringDim fso As Object, objFile As ObjectSet fso = CreateObject("scripting.filesystemobject")Set acroapp = CreateObject("AcroExch.App")Set acroAVDoc = CreateObject("AcroExch.AVDoc")filePath = Application.GetOpenFilename("文件(*.pdf),*.pdf;*.PDF", , "请选择文件", , True)For i = LBound(filePath) To UBound(filePath)    Set objFile = fso.Getfile(filePath(i))    savePath = Replace(objFile.Path, ".pdf", ".xlsx", , , vbTextCompare)    If acroAVDoc.Open(filePath(i), "") Then        Set acroPDDoc = acroAVDoc.GetPDDoc        Set jsobj = acroPDDoc.GetJSObject        jsobj.SaveAs savePath, "com.adobe.acrobat.xlsx"        acroAVDoc.Close True    End IfNext iEnd Sub

第5行:创建fso对象

第6行:创建Acrobat对象

第7行:创建PDF文档对象

第8行:使用getopenFilename获取PDF文件路径

第9行:循环选取的PDF文件路径

第10行:使用FSO获取文件

第11行:将文件路径的.pdf替换为.xlsx,作为保存路径

第12行:打开PDF文件

第13行:获取PDF页面

第14行:获取js对象

第15行:将PDF另存为xlsx格式的Excel文档

第16行:关闭PDF

下面来看看转换效果

、PDF转PPT

Sub pdfToPPT()Dim acroapp As Object, acroAVDoc As Object, acroPDDoc As Object, jsobj As ObjectDim filePath, savePath As StringDim fso As Object, objFile As ObjectSet fso = CreateObject("scripting.filesystemobject")Set acroapp = CreateObject("AcroExch.App")Set acroAVDoc = CreateObject("AcroExch.AVDoc")filePath = Application.GetOpenFilename("文件(*.pdf),*.pdf;*.PDF", , "请选择文件", , True)For i = LBound(filePath) To UBound(filePath)    Set objFile = fso.Getfile(filePath(i))    savePath = Replace(objFile.Path, ".pdf", ".pptx", , , vbTextCompare)    If acroAVDoc.Open(filePath(i), "") Then        Set acroPDDoc = acroAVDoc.GetPDDoc        Set jsobj = acroPDDoc.GetJSObject        jsobj.SaveAs savePath, "com.adobe.acrobat.pptx"        acroAVDoc.Close True    End IfNext iEnd Sub
相对Excel,转为PPT只改动了两处
第11行:更改为pptx后缀
savePath = Replace(objFile.Path, ".pdf", ".pptx", , , vbTextCompare)

第15行:xlsx更改为pptx

jsobj.SaveAs savePath, "com.adobe.acrobat.pptx"
执行代码后,效果如下:

三、PDF转jpg图片

Sub pdfToJPG()Dim acroapp As Object, acroAVDoc As Object, acroPDDoc As Object, jsobj As ObjectDim filePath, savePath As StringDim fso As Object, objFile As ObjectSet fso = CreateObject("scripting.filesystemobject")Set acroapp = CreateObject("AcroExch.App")Set acroAVDoc = CreateObject("AcroExch.AVDoc")filePath = Application.GetOpenFilename("文件(*.pdf),*.pdf;*.PDF", , "请选择文件", , True)For i = LBound(filePath) To UBound(filePath)    Set objFile = fso.Getfile(filePath(i))    savePath = Replace(objFile.Path, ".pdf", ".jpg", , , vbTextCompare)    If acroAVDoc.Open(filePath(i), "") Then        Set acroPDDoc = acroAVDoc.GetPDDoc        Set jsobj = acroPDDoc.GetJSObject        jsobj.SaveAs savePath, "com.adobe.acrobat.jpeg"        acroAVDoc.Close True    End IfNext iEnd Sub
相对Excel,转为JPG只改动了两处
第11行:xlsx更改为jpg后缀
savePath = Replace(objFile.Path, ".pdf"".jpg", , , vbTextCompare)

第15行:xlsx更改为jpeg

jsobj.SaveAs savePath, "com.adobe.acrobat.jpeg"
执行代码后,效果如下:
他可以将PDF的每个页面转为一张图片

、PDF转TXT

当我们只需要PDF中的文字的时候,我们就可以将他们转为TXT,这样使用VBA处理数据也变得很方便
Sub pdfToText()Dim acroapp As Object, acroAVDoc As Object, acroPDDoc As Object, jsobj As ObjectDim filePath, savePath As StringDim fso As Object, objFile As ObjectSet fso = CreateObject("scripting.filesystemobject")Set acroapp = CreateObject("AcroExch.App")Set acroAVDoc = CreateObject("AcroExch.AVDoc")filePath = Application.GetOpenFilename("文件(*.pdf),*.pdf;*.PDF", , "请选择文件", , True)For i = LBound(filePath) To UBound(filePath)    Set objFile = fso.Getfile(filePath(i))    savePath = Replace(objFile.Path, ".pdf", ".txt", , , vbTextCompare)    If acroAVDoc.Open(filePath(i), "") Then        Set acroPDDoc = acroAVDoc.GetPDDoc        Set jsobj = acroPDDoc.GetJSObject        jsobj.SaveAs savePath, "com.adobe.acrobat.plain-text"        acroAVDoc.Close True    End IfNext iEnd Sub
相对Excel,转为txt只改动了两处
第11行:xlsx更改为txt后缀
savePath = Replace(objFile.Path, ".pdf"".txt", , , vbTextCompare)

第15行:xlsx更改为plain-text

jsobj.SaveAs savePath, "com.adobe.acrobat.plain-text"
执行代码后,效果如下:

好了,本期教程就到这里啦,走过路过的点个关注分享一下吧,谢谢啦,如果你是一个VBA小白,想要了解该如何开始学习VBA,建议看看以下文章

Excel VBA学习路线知识框架梳理(小白VBA入门必看-建议收藏)

求关注-求星标-求点赞-求看-求分享
最近创建了一个VBA学习交流群,如有需要进群可以添加微信 jaresfzz

Excel应用教程
主要提供Excel vba,函数,图表,数据透视表,pq,Js等教程
 最新文章