FSO VBA文件移动代码运行失败,请求排查代码错误
代码核心错误点
- 路径拼接缺少分隔反斜杠:你定义的
FromDir末尾没有加反斜杠\,拼接通配符*.*后实际路径变成C:\Users\B\Source Folder*.*,属于无效路径,FSO无法识别到目标文件。 - 目标路径规则不符合FSO要求:
FSO.MoveFile的目标路径如果是文件夹,必须以反斜杠结尾,否则FSO会尝试将源文件重命名为目标路径的文件名,而非移动到该文件夹下,若目标路径已存在同名文件夹就会触发权限或路径不存在错误。
可选优化项
- 提前判断目标文件夹是否存在,避免因目标路径不存在导致的移动失败。
- 添加错误捕获机制,可更方便定位异常原因。
修正后代码
Option Explicit Sub MoveFiles() Dim FSO As Object Dim FromDir As String Dim ToDir As String Dim FExtension As String Dim Fnames As String ' 路径末尾统一加反斜杠,避免拼接错误 FromDir = "C:\Users\B\Source Folder\" ToDir = "C:\Users\B\Destination Folder\" FExtension = "*.*" Fnames = Dir(FromDir & FExtension) If Len(Fnames) = 0 Then MsgBox "无匹配文件或文件已完成移动,源路径:" & FromDir Exit Sub End If Set FSO = CreateObject("Scripting.FileSystemObject") ' 提前判断目标文件夹是否存在,不存在则自动创建 If Not FSO.FolderExists(ToDir) Then FSO.CreateFolder ToDir End If FSO.MoveFile Source:=FromDir & FExtension, Destination:=ToDir Set FSO = Nothing MsgBox "文件移动完成" End Sub
注意事项
- 请确保源文件夹下的文件没有被其他程序打开,否则会触发权限不足错误导致移动失败。
- 请确认当前Windows账号对源文件夹、目标文件夹都有读写权限。
- 如果只需要移动特定后缀的文件,修改
FExtension的值即可,比如要移动Excel文件就改为*.xlsx。
内容的提问来源于stack exchange,提问作者Isaac
相关产品推荐
相关产品推荐

