Excel VBA运行时错误76(路径未找到):文件移动宏突然失效
可能的问题点及对应解决方案:
确认路径格式是否为本地文件系统路径
SharePoint环境中,ThisWorkbook.Path可能返回Web格式路径(如https://xxx.sharepoint.com/...),而FSO仅支持本地文件系统路径(如C:\Users\用户名\OneDrive - 公司名\...)。先添加MsgBox ThisWorkbook.Path查看实际路径值,若为Web路径,需切换到本地同步文件夹运行宏。修正通配符使用
代码中Test1**的**不是合法Windows文件通配符,应改为Test1*(匹配所有以Test1开头的文件),否则FSO无法识别匹配文件。确保目标文件夹存在并处理同步延迟
SharePoint同步可能存在延迟,即使手动新建文件夹,FSO也可能暂时检测不到。在移动前添加文件夹检查与创建逻辑:If Not fso.FolderExists(DestinFileName) Then fso.CreateFolder DestinFileName End If同时手动同步OneDrive/SharePoint后再运行宏,避免同步延迟导致的路径识别问题。
使用FSO内置方法处理路径分隔符
放弃手动拼接路径,改用BuildPath方法自动适配Windows路径分隔符,避免/与\转换错误:SourceFileName = fso.BuildPath(ThisWorkbook.Path, "Test1*") DestinFileName = fso.BuildPath(ThisWorkbook.Path, "resultat")
修正后的完整代码
Sub test() Dim fso As Object Dim SourceFileName As String, DestinFileName As String Set fso = CreateObject("Scripting.FileSystemObject") ' 用BuildPath构建合法路径,修正通配符 SourceFileName = fso.BuildPath(ThisWorkbook.Path, "Test1*") DestinFileName = fso.BuildPath(ThisWorkbook.Path, "resultat") ' 确保目标文件夹存在 If Not fso.FolderExists(DestinFileName) Then fso.CreateFolder DestinFileName End If ' 检查源文件是否存在,避免无匹配文件报错 If fso.FileExists(fso.GetAbsolutePathName(SourceFileName)) Then fso.MoveFile Source:=SourceFileName, Destination:=DestinFileName MsgBox SourceFileName & " 已移动到 " & DestinFileName Else MsgBox "未找到匹配的源文件:" & SourceFileName End If Set fso = Nothing End Sub
内容的提问来源于stack exchange,提问作者Frederikke Kappelhøj
相关产品推荐
相关产品推荐

