You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用VBA遍历目录所有文件夹筛选指定Word文档并转换为PDF

调整后的VBA实现方案

要实现遍历所有子文件夹+指定Word文件筛选转换,核心是新增递归遍历文件夹的逻辑,同时预留筛选规则配置位,完整代码如下:

Sub BatchConvertAllWordToPDF()
    Dim fso As Object
    Dim rootFolder As Object
    Dim strRootFolder As String, strFileFilter As String
    
    ' -------------------------- 基础配置项,可直接修改以下参数 --------------------------
    strRootFolder = "C:\Users\Test\Desktop\Test Files\"  ' 要处理的根目录
    strFileFilter = "*.docx"  ' 文件筛选规则,示例:"*结算*.docx"=文件名含结算的docx,"*.doc?"=所有doc/docx文件
    ' -------------------------------------------------------------------------------------
    
    ' 创建文件系统对象
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set rootFolder = fso.GetFolder(strRootFolder)
    
    ' 调用递归处理子程序,处理根目录和所有子文件夹
    ProcessFolder rootFolder, strFileFilter
    
    ' 释放对象
    Set rootFolder = Nothing
    Set fso = Nothing
    MsgBox "全部转换完成!", vbInformation
End Sub

' 递归处理文件夹的子程序
Sub ProcessFolder(folder As Object, filter As String)
    Dim subFolder As Object
    Dim file As Object
    Dim objDoc As Document
    
    ' 先处理当前文件夹下的所有匹配文件
    For Each file In folder.Files
        If file.Name Like filter Then
            On Error Resume Next ' 跳过打开失败的文件(如加密、正在使用的文件)
            Set objDoc = Documents.Open(FileName:=file.Path)
            If Err.Number = 0 Then
                ' 导出为PDF,和原文件同目录同名
                objDoc.ExportAsFixedFormat _
                    OutputFileName:=Left(file.Path, InStrRev(file.Path, ".")) & "pdf", _
                    ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForPrint, _
                    Range:=wdExportAllDocument, Item:=wdExportDocumentContent
                objDoc.Close SaveChanges:=wdDoNotSaveChanges
            End If
            On Error GoTo 0
        End If
    Next file
    
    ' 递归处理所有子文件夹
    For Each subFolder In folder.SubFolders
        ProcessFolder subFolder, filter
    Next subFolder
End Sub

使用说明

  • 筛选规则配置:strFileFilter支持通配符匹配,*代表任意长度任意字符,?代表单个任意字符,可灵活配置筛选条件:
    • 仅转换docx文件:填"*.docx"
    • 转换所有Word文件(含doc/docx/docm):填"*.doc?"
    • 仅转换文件名含"季度报告"的docx:填"*季度报告*.docx"
    • 仅转换2024年开头的Word文件:填"2024*.doc?"
  • 转换后的PDF默认和原Word文件存放在同一目录,文件名保持和原Word一致,仅修改后缀为.pdf
  • 代码自动跳过加密、正在被占用的Word文件,不会中断转换流程

内容的提问来源于stack exchange,提问作者user13350731

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 03:27:00