Word VBA批量格式转换:docx转pdf、doc、rtf、txt以及反向转换

您所在的位置:网站首页 怎么把docx转换为txt Word VBA批量格式转换:docx转pdf、doc、rtf、txt以及反向转换

Word VBA批量格式转换:docx转pdf、doc、rtf、txt以及反向转换

2024-01-21 21:55| 来源: 网络整理| 查看: 265

    有时候需要把大量的docx文件另存为其它格式,比如pdf、doc、rtf、txt,或者反向转换,可以用VBA批量处理。启动word,按下Alt+F11,打开Microsoft Visual Basic for Applications,点击 插入>模块,将下面的代码粘贴进去,然后按F5(某些笔记本电脑可能需要按Fn+F5),或者点击图中的绿色小三角形,便可以执行代码。代码中涉及到的路径要根据自己的实际情况进行修改。pdf文件除了能保持复杂的排版和数学公式不走样,还可以再借助Adobe Acrobat(不是Adobe Reader)另存为png、jpg等图片格式(pdf文件的每一页会成为一张单独的图片)。因为word本身不能直接另存为图片,所以需要借助pdf中转。下面的代码中用到了open函数,并且为名为Visible的参数赋值为msoFalse(msoFalse前面共有11个英文逗号),目的是打开文件时不在word窗口中显示文件的内容,加快转换速度。尝试过使用Application.ScreenUpdating = False来实现与Visible=msoFalse相同的效果,然而并不可行,不知是什么原因。Replace的作用是修改后缀名,SaveAs2的作用是“另存为”。

PowerPoint的批量转换参见 https://blog.csdn.net/pijianzhirui/article/details/85936272           Excel的批量转换参见 https://blog.csdn.net/pijianzhirui/article/details/85939896

 还有一个名为Office Tool Plus(官网:https://otp.landian.vip/zh-cn/)的工具也可以进行批量格式转换。

'docx转pdf、doc、rtf、txt Option Explicit Sub docx2other() On Error Resume Next Dim sEveryFile As String,sSourcePath As String,sNewSavePath As String Dim CurDoc As Object sSourcePath = "E:\DOCX文件\" '假定待转换的docx文件全部在"E:\DOCX文件\"下,你需要按实际情况修改。 sEveryFile = Dir(sSourcePath &"*.docx") Do While sEveryFile "" Set CurDoc = Documents.Open(sSourcePath & sEveryFile, , , , , , , , , , , msoFalse) sNewSavePath = VBA.Strings.Replace(sSourcePath & sEveryFile, ".docx", ".pdf") '如果想导出doc/rtf/txt等,就把上一行行尾的pdf换成doc/rtf/txt '转化后的文件也在"E:\DOCX文件\"下,当然你可以按需修改。 CurDoc.SaveAs2 sNewSavePath, wdFormatPDF 'pdf对应wdFormatPDF,doc对应wdFormatDocument,rtf对应wdFormatRTF,txt对应wdFormatText '更多格式可参见文末的截图WdSaveFormat Enumeration CurDoc.Close SaveChanges:=False sEveryFile= Dir Loop Set CurDoc = Nothing End Sub 'pdf、doc、rtf、txt转docx Option Explicit Sub other2docx() On Error Resume Next Dim sEveryFile As String,sSourcePath As String,sNewSavePath As String Dim CurDoc As Object sSourcePath = "E:\PDF文件\" '假定待转换的pdf文件全部在"E:\PDF文件\"下,你需要按实际情况修改。 sEveryFile = Dir(sSourcePath &"*.pdf") Do While sEveryFile "" Set CurDoc = Documents.Open(sSourcePath & sEveryFile, , , , , , , , , , , msoFalse) CurDoc.Convert sNewSavePath = VBA.Strings.Replace(sSourcePath & sEveryFile, ".pdf", ".docx") '要把doc/rtf/txt转为docx,则把上面第9行和第13行两处".pdf"改为".doc"/".rtf"/".txt" '转化后的文件也在"E:\PDF文件\"下,当然你可以按需修改。 CurDoc.SaveAs2 sNewSavePath, wdFormatDocumentDefault CurDoc.Close SaveChanges:=False sEveryFile = Dir Loop Set CurDoc = Nothing End Sub

        pdf转docx时很容易报错,比如“运行时错误'5121':抱歉,在将您的 PDF 转化为 Word 文档时遇到问题。(xxx.pdf)”转换速度非常慢,有时候还会让word卡死,于是只能用任务管理器结束掉word。注意观察是哪个PDF文件导致卡死,然后把这个PDF文件挪到别的文件夹,不要再让word进行转化了,试试用Adobe Acrobat转换。在word 2016中测试,即使是扫描版(纯图片)PDF,word 2016也能进行文字识别,不确定更低版本的word能否将pdf转为docx,以及能否进行文字识别。

以下为一些函数的介绍。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3