VBA使用FSO.CopyFolder复制含空格文件夹时出现“Path not found”错误求助
解决FSO复制含空格目录时的"Path not found"错误
针对你遇到的问题,以下是几种可行的解决办法:
1. 用双引号包裹带空格的路径
FSO对含空格的路径解析容易出问题,给路径加上双引号就能避免空格被误判为路径分隔符。修改代码里的路径赋值:
strFolder = """f:\Logistics Manager\Invoice\22000741 KlientID\""" strToPath = """\\10.224.73.57\Database\Logistics\Invoice\"""
这里的两个双引号是VBA里表示字符串内单个双引号的写法,确保路径被完整识别。
2. 明确目标路径的完整指向
CopyFolder的第二个参数如果是已存在的目录,需要确认你是要把源文件夹复制到这个目录下,还是要覆盖同名文件夹。如果是前者,可以直接指定目标的完整路径(包含源文件夹名):
strToPath = """\\10.224.73.57\Database\Logistics\Invoice\22000741 KlientID\"""
这样FSO会明确知道复制的目标位置,减少歧义。
3. 增加路径验证逻辑
在复制前先检查源和目标路径是否真的存在,排除拼写错误或隐性权限问题:
Sub foldecopytest() Dim objFSO, strFolder, strToPath strFolder = "f:\Logistics Manager\Invoice\22000741 KlientID\" strToPath = "\\10.224.73.57\Database\Logistics\Invoice\" Set objFSO = CreateObject("Scripting.FileSystemObject") ' 检查源文件夹是否存在 If Not objFSO.FolderExists(strFolder) Then MsgBox "源路径找不到:" & strFolder Exit Sub End If ' 检查目标父文件夹是否存在 If Not objFSO.FolderExists(strToPath) Then MsgBox "目标路径找不到:" & strToPath Exit Sub End If ' 包裹引号后执行复制 objFSO.CopyFolder """" & strFolder & """", """" & strToPath & """" End Sub
4. 排查网络路径权限
目标是网络共享路径的话,要确认当前用户对该路径有读写权限——有时候权限不足会伪装成"Path not found"错误。可以手动访问\\10.224.73.57\Database\Logistics\Invoice\,测试能否正常创建或修改文件。
内容的提问来源于stack exchange,提问作者Aleksandr H.
相关产品推荐
相关产品推荐

