vba将一个文件夹的内容复制到另外一个文件夹的函数,若存在则是否覆盖的参数。复制前检查源文件夹是否存在。若目标文件夹不存在,则新建

vbnet 复制代码
' ============================================================
' 复制文件夹内容到另一个文件夹
' srcPath  : 源文件夹路径(必须存在)
' dstPath  : 目标文件夹路径(不存在则自动创建)
' overwrite: True = 覆盖同名文件; False = 跳过已存在文件
' 返回值   : True = 成功; False = 失败
' ============================================================
Function CopyFolderContents(ByVal srcPath As String, _
                            ByVal dstPath As String, _
                            ByVal overwrite As Boolean) As Boolean

    Dim fso As Object
    Dim srcFolder As Object
    Dim subFolder As Object
    Dim fileItem As Object
    Dim targetPath As String

    Set fso = CreateObject("Scripting.FileSystemObject")

    ' ---------- 1. 检查源文件夹是否存在 ----------
    If Not fso.FolderExists(srcPath) Then
        MsgBox "源文件夹不存在:" & vbCrLf & srcPath, vbExclamation, "错误"
        CopyFolderContents = False
        Exit Function
    End If

    ' ---------- 2. 目标文件夹不存在则创建 ----------
    If Not fso.FolderExists(dstPath) Then
        On Error GoTo CreateErr
        fso.CreateFolder dstPath
        On Error GoTo 0
    End If

    Set srcFolder = fso.GetFolder(srcPath)

    ' ---------- 3. 复制文件 ----------
    For Each fileItem In srcFolder.Files
        targetPath = fso.BuildPath(dstPath, fileItem.Name)

        If fso.FileExists(targetPath) Then
            ' 文件已存在
            If overwrite Then
                On Error GoTo CopyErr
                fso.CopyFile fileItem.Path, targetPath, True   ' 覆盖
                On Error GoTo 0
            End If
            ' overwrite = False 时直接跳过
        Else
            ' 文件不存在,直接复制
            On Error GoTo CopyErr
            fso.CopyFile fileItem.Path, targetPath, False
            On Error GoTo 0
        End If
    Next fileItem

    ' ---------- 4. 递归复制子文件夹 ----------
    For Each subFolder In srcFolder.SubFolders
        targetPath = fso.BuildPath(dstPath, subFolder.Name)
        If Not CopyFolderContents(subFolder.Path, targetPath, overwrite) Then
            CopyFolderContents = False
            Exit Function
        End If
    Next subFolder

    CopyFolderContents = True
    Exit Function

CreateErr:
    MsgBox "无法创建目标文件夹:" & vbCrLf & dstPath & vbCrLf & Err.Description, vbCritical, "错误"
    CopyFolderContents = False
    Exit Function

CopyErr:
    MsgBox "复制文件失败:" & vbCrLf & fileItem.Path & vbCrLf & Err.Description, vbCritical, "错误"
    CopyFolderContents = False
    Exit Function

End Function
  • ✅ 复制前检查源文件夹是否存在

  • ✅ 目标文件夹不存在则自动创建

  • ✅ 通过参数控制是否覆盖已存在的文件

  • ✅ 支持递归复制子文件夹

相关推荐
怕浪猫2 小时前
分享一个做视频的skill,这条白板视频,每一笔都是代码画的
前端·javascript·面试
aa小小2 小时前
大屏自适应缩放方案
前端·数据可视化
陪我去看海3 小时前
被要求猛出小程序,做了这个多平台多环境的部署替我承受压力
前端·微信小程序·抖音小程序
Frag0ut4 小时前
告别插件时代:HTML5 视频播放对比 Flash/Silverlight/ActiveX 的性能与技术优势解析
前端·html5·视频播放·flash·activex·流媒体技术·silverlight
用户818618028004 小时前
MongoDB文档模型设计——从建模到索引
前端
無名路人4 小时前
小程序点餐页吸顶滚动之分类按需加载,上划切换
前端·vue.js·微信小程序
竹林8185 小时前
把神经网络塞进一个浏览器标签页:端侧视觉 AI 的工程真相
前端·浏览器
乘风gg5 小时前
别跟风 AI 副业,工程师最该学的是 AI Coding
前端·ai编程·claude
Frag0ut5 小时前
深度解析:Chrome 自启动与后台常驻服务的作用、关闭方法及利弊权衡
前端·chrome