Excel VBA使用FileSystemObject.CopyFolder跨网络驱动器复制失败求助
解决VBA中FileSystemObject跨网络复制文件夹失败的问题
核心问题修正:网络路径格式错误
你的代码中FromPath的网络共享路径缺少一个前置反斜杠,网络共享路径必须以**双反斜杠\\**开头,否则FSO无法识别为合法的网络资源。
修正后的完整代码
Sub aatest() 'Richards file copy procedure Dim FSO As Object Dim FromPath As String Dim ToPath As String ' 修正网络路径,添加双反斜杠开头 FromPath = "\\swv082fs\Data\test" ToPath = "C:\Users\rilindley\Data" ' 移除路径末尾的反斜杠(保持原有逻辑) If Right(FromPath, 1) = "\" Then FromPath = Left(FromPath, Len(FromPath) - 1) End If If Right(ToPath, 1) = "\" Then ToPath = Left(ToPath, Len(ToPath) - 1) End If Set FSO = CreateObject("scripting.filesystemobject") ' 检查源文件夹是否存在 If FSO.FolderExists(FromPath) = False Then MsgBox FromPath & " 不存在" Exit Sub End If ' 添加错误捕获,方便排查权限或其他问题 On Error Resume Next FSO.CopyFolder Source:=FromPath, Destination:=ToPath, OverWriteFiles:=True On Error GoTo 0 ' 提示复制结果 If Err.Number = 0 Then MsgBox "文件夹复制完成" Else MsgBox "复制失败:" & Err.Description End If End Sub
额外排查要点
- 权限验证:确保当前Windows用户对
\\swv082fs\Data\test有读取权限,对C:\Users\rilindley\Data有写入权限。如果网络共享需要凭据,先手动访问一次共享文件夹完成身份验证。 - 网络稳定性:确认网络连接正常,能直接在文件资源管理器中打开源共享路径。
- 覆盖参数:代码中添加了
OverWriteFiles:=True,如果目标文件夹已存在,会自动覆盖原有内容;若不需要覆盖,可移除该参数(默认不覆盖,存在则报错)。
内容的提问来源于stack exchange,提问作者Richard Lindley
相关产品推荐
相关产品推荐

