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

如何用VBA比较两个目录并找出更新目录中的新增文件

VBA实现两个目录新增文件对比

以下是直接可用的VBA代码,能帮你找出Latest目录里比Last目录多出来的新增文件:

Sub FindNewFiles()
    Dim fso As Object
    Dim latestFolder As Object, lastFolder As Object
    Dim latestFile As Object, lastFile As Object
    Dim fileDict As Object
    Dim newFiles As String
    
    ' 定义两个目录路径,注意路径分隔符是\
    Const File_updated As String = "C:\Users\Desktop\Latest"
    Const File_Last As String = "C:\Users\Desktop\Last"
    
    ' 创建FileSystemObject和字典对象(Late Binding,无需额外引用)
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fileDict = CreateObject("Scripting.Dictionary")
    
    ' 先检查目录是否存在
    If Not fso.FolderExists(File_updated) Or Not fso.FolderExists(File_Last) Then
        MsgBox "指定的目录不存在,请检查路径!", vbExclamation
        Exit Sub
    End If
    
    ' 把Last目录的所有文件名存入字典(统一转大写,避免大小写误判)
    Set lastFolder = fso.GetFolder(File_Last)
    For Each lastFile In lastFolder.Files
        fileDict.Add UCase(lastFile.Name), ""
    Next lastFile
    
    ' 遍历Latest目录,筛选出不在字典里的文件
    Set latestFolder = fso.GetFolder(File_updated)
    For Each latestFile In latestFolder.Files
        If Not fileDict.Exists(UCase(latestFile.Name)) Then
            newFiles = newFiles & latestFile.Name & vbCrLf
        End If
    Next latestFile
    
    ' 输出结果
    If newFiles <> "" Then
        MsgBox "Latest目录中的新增文件:" & vbCrLf & vbCrLf & newFiles, vbInformation
        ' 可选:把结果写入Excel工作表
        ' Sheets("Sheet1").Range("A1").Value = "新增文件列表"
        ' Sheets("Sheet1").Range("A2").Resize(UBound(Split(newFiles, vbCrLf))).Value = Application.Transpose(Split(newFiles, vbCrLf))
    Else
        MsgBox "Latest目录没有新增文件!", vbInformation
    End If
    
    ' 释放对象
    Set fso = Nothing
    Set latestFolder = Nothing
    Set lastFolder = Nothing
    Set fileDict = Nothing
End Sub

关键说明:

  • 路径修正:注意原路径写法C\Users是错误的,正确格式是C:\Users,代码里已经修正,你只需要改成自己实际的目录路径。
  • 高效查找:用字典存储旧目录文件名,Exists方法的查找效率远高于循环比对,适合文件数量较多的场景(比如你提到的325个文件)。
  • 大小写兼容:统一转成大写对比,避免因文件名大小写差异导致的误判。
  • 结果输出:默认用消息框展示新增文件列表,注释里提供了写入Excel工作表的方式,按需切换即可。

使用步骤:

  1. 打开Excel,按Alt+F11打开VBA编辑器。
  2. 右键点击工程窗口中的工作簿名称 → 插入 → 模块。
  3. 粘贴上述代码,修改File_updated和File_Last的路径。
  4. 按F5运行宏,或回到Excel界面通过「开发工具」→「宏」执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:10:10