当前位置: 首页 > backend >正文

【VBA】把目录及子目录下所有doc/docx转换为pdf格式

Document.SaveAs2 方法 (Word) | Microsoft Learn

https://learn.microsoft.com/zh-cn/office/vba/api/word.wdsaveformat

新建一个1.xls

用office的excel打开1.xls

查看代码

把下面的代码粘贴到右边的代码区域 

Sub Main()Dim path As Stringpath = "F:\doc"VisitFolder (path)Debug.Print "操作完成"
End SubSub VisitFolder(fpath As String)Dim testStr As StringDim result As StringDim OFso As Object, baseFolder As Object, ofile As ObjectSet OFso = CreateObject("Scripting.FileSystemObject")Set baseFolder = OFso.GetFolder(fpath)Debug.Print "baseFolder: " & baseFolder' visit sub folderFor Each folder In baseFolder.SubFoldersDebug.Print "folder.path: " & folder.pathCall VisitFolder(folder.path)Next' visit filesFor Each ofile In baseFolder.FilesDebug.Print "ofile.path: " & ofile.pathPosition = InStr(1, ofile.path, ".doc") ' rename .doc to .pdfIf Position > 0 ThentestStr = Mid(ofile.path, 1, Position - 1)result = testStr & ".pdf"Debug.Print resultCall WordToPDF(ofile.path, result)ElseDebug.Print "子字符串未找到"End IfNext
End SubSub Main()Dim path As Stringpath = "F:\doc"VisitFolder (path)Debug.Print "操作完成"
End SubSub VisitFolder(fpath As String)Dim testStr As StringDim result As StringDim OFso As Object, baseFolder As Object, ofile As ObjectSet OFso = CreateObject("Scripting.FileSystemObject")Set baseFolder = OFso.GetFolder(fpath)Debug.Print "baseFolder: " & baseFolder' visit sub folderFor Each folder In baseFolder.SubFoldersDebug.Print "folder.path: " & folder.pathCall VisitFolder(folder.path)Next' visit filesFor Each ofile In baseFolder.FilesDebug.Print "ofile.path: " & ofile.pathPosition = InStr(1, ofile.path, ".doc") ' rename .doc to .pdfIf Position > 0 ThentestStr = Mid(ofile.path, 1, Position - 1)result = testStr & ".pdf"Debug.Print resultCall WordToPDF(ofile.path, result)ElseDebug.Print "子字符串未找到"End IfNext
End Sub' doc/docx save as pdf
Sub WordToPDF(srcpath As String, destpath As String)Dim word As ObjectDim doc As ObjectSet word = CreateObject("Word.Application")Set doc = word.Documents.Open(srcpath) ' doc, docx都可以doc.SaveAs2 Filename:=destpath, FileFormat:=17 ' pdfdoc.Closeword.Quit
End Sub' doc/docx save as pdf
Sub WordToPDF(srcpath As String, destpath As String)Dim word As ObjectDim doc As ObjectSet word = CreateObject("Word.Application")Set doc = word.Documents.Open(srcpath) ' doc, docx都可以doc.SaveAs2 Filename:=destpath, FileFormat:=17 ' pdfdoc.Closeword.Quit
End Sub


创建一些测试的目录和doc

代码的初始化目录设置下要转换的根目录,这里假设以E:\docs2pdfs\doc\为例:

设置好后,点击运行

如果电脑的word可以转换,这个脚本正常一般是可以执行的,执行完的效果会是这样:

 对应的目录会将docx生成pdf,其实doc也是可以转成pdf的

有兴趣的话,可以调试下vba脚本。

感谢阅读。 

http://www.xdnf.cn/news/13456.html

相关文章:

  • 【一文理解】下采样与上采样区别
  • DAY 27 函数专题2:装饰器
  • 3.2 组帧
  • 嵌入式学习笔记DAY35(数据库)
  • 少量数据达到更好效果
  • 跌穿20万辆,更猛烈的价格战却导致销量暴跌,难怪电车内讧了!
  • 基于OpenCV的滑动验证码缺口识别全流程解析(2025企业级方案)
  • 基于强化学习的智能调度系统:从理论到实践
  • VSomeip库- 编译使用
  • Dify-6: 部署
  • HTB 赛季8靶场 - TombWatcher
  • 制造业数智化转型:从行业痛点到R²AIN SUITE AI一体化解决方案
  • 算法题(166):占卜DIY
  • 打造多模态交互新范式|彩讯股份中标2025年中国移动和留言平台AI智能体研发项目
  • antd-vue - - - - - a-table排序
  • 【模板编程】
  • GPU架构对大模型推理部署到底有什么影响?
  • 跨平台架构区别
  • CentOS7下的大数据集群(Hadoop生态)安装部署
  • 基于binlog恢复误删除MySQL数据
  • 基础篇:4. 页面渲染流程与性能优化
  • 深入解析 sock_skb_cb_check_size 宏及其内核安全机制
  • 如何在看板中体现优先级变化
  • Day18
  • python 中线程、进程、协程
  • RED:用于低剂量 PET 正弦图重建的残差估计扩散模型|文献速递-深度学习医疗AI最新文献
  • 上门服务类App开发全流程:从需求分析到部署上线
  • 【16】牵绳遛狗数据集(有v5/v8模型)/YOLO牵绳遛狗检测
  • 前馈神经网络
  • Vim 撤销 / 重做 / 操作历史命令汇总