• 首页
  • 狐文
  • 狐图
  • About
狐窝
OvO
  1. 首页
  2. 未分类
  3. 正文

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

2020年09月08日 36点热度 0人点赞 0条评论

from--https://blog.csdn.net/pijianzhirui/article/details/78668695

有时候需要把大量的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/)的工具也可以进行批量格式转换。

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

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


以下为一些函数的介绍。

标签: pdf vba word
最后更新:2020年09月08日

OvO

狐狸

点赞
< 上一篇
下一篇 >
最新 热点 随机
最新 热点 随机
钛备份或小米系统备份功能备份出来的APK无法正常还原 BBR安装启用 安装docker mitmproxy 调试方法 Android SDK 版本选择 Perdition Mail代理服务器配置 HAProxy SSL代理 Openssl 中间人SSL代理 Stunnel SSL to SSL代理 NGINX反代IMAP配置 各种设备User Agent Torrent下载工具推荐 用 rar2john+hashcat 破解 RAR 文件密码 2020最好的Linux发行版 关闭新版chrome工具栏上拼图图标 Office 下载、安装、激活,有它就够了! Android 非官方的发行版 openwrt添加autoconf-archive
极验验证:传统验证码破解算法浅析 Oracle 客户端plsql developer和服务器编码不同的解决办法 debian ubuntu 启动时忽略 sysctl.conf 的设置 【centos7】添加开机启动服务/脚本 Git 设置网络代理 拦截Http请求/Jquery【Ajax】 验证码破解技术四部曲之使用K近邻算法(三) Scrapy 在PyCharm中输出信息为红色字体的解决办法 如何下载各版本Chrome的离线安装包 nginx的location配置详解 关于FreeNAS是否适合虚拟化的讨论 Window10上CLion极简配置教程 5 个用于 SOHO 的 Linux 服务器发行版 IDEA识别不出Java JDK解决方案 Linux Mint 安装JDK Debian通过PPA源安装软件 为什么debian我安装 apt-spy 时候说没找到 Debian更新报错 TypeError: 'NoneType' object is not callable
标签聚合
linux blog yum 路由 e ssl 镜像 https 网卡 密码 chrome 安装 git 下载 chromium docker

COPYRIGHT © 2020 狐窝. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS