SharePoint文件夹间文件移动VBA脚本报错求助(错误76:路径未找到)
Scripting.FileSystemObject(FSO)不支持直接识别HTTPS格式的SharePoint云端路径,它只能处理本地文件系统路径、映射的网络驱动器路径,或者SMB协议的网络共享路径。你当前使用的https://xxx.sharepoint.com/...是网页端访问路径,不属于文件系统可识别的路径格式,因此执行FSO.GetFolder时会触发“路径未找到”错误。
以下是三种可行的解决方案:
方案一:使用OneDrive同步的本地路径(推荐,兼容原有逻辑)
让所有使用宏的用户确保已将目标SharePoint库同步到本地OneDrive,然后通过OneDrive的环境变量拼接本地同步路径,这样FSO就能正常访问:
修改后的代码示例
Sub MoveFiles() ' 移动前一日文件到"PreviousRateSheets"文件夹 Dim SourceFolderPath As String Dim DestinationFolderPath As String Dim FSO As Object Dim SourceFolder As Object Dim File As Object Dim OneDriveBasePath As String Application.ScreenUpdating = False ' 获取OneDrive同步根路径:商业/工作账户用OneDriveCommercial,个人账户用OneDrive OneDriveBasePath = Environ("OneDriveCommercial") If OneDriveBasePath = "" Then OneDriveBasePath = Environ("OneDrive") Set FSO = CreateObject("Scripting.FileSystemObject") ' 用BuildPath拼接路径,避免斜杠格式错误 SourceFolderPath = FSO.BuildPath(OneDriveBasePath, "XXX/XXX/XXX/XXX/TodayRateSheet") DestinationFolderPath = FSO.BuildPath(OneDriveBasePath, "XXX/XXX/XXX/XXX/PreviousRateSheets") ' 前置检查:确保源文件夹存在 If Not FSO.FolderExists(SourceFolderPath) Then MsgBox "源文件夹不存在,请检查OneDrive同步状态或路径配置", vbExclamation GoTo Cleanup End If ' 若目标文件夹不存在则自动创建 If Not FSO.FolderExists(DestinationFolderPath) Then FSO.CreateFolder DestinationFolderPath End If Set SourceFolder = FSO.GetFolder(SourceFolderPath) ' 遍历移动文件 For Each File In SourceFolder.Files FSO.MoveFile Source:=File.Path, Destination:=FSO.BuildPath(DestinationFolderPath, File.Name) Next Cleanup: Set SourceFolder = Nothing Set FSO = Nothing Application.ScreenUpdating = True End Sub
注意事项
- 确保所有用户已完成SharePoint库的OneDrive同步操作
- 环境变量
OneDriveCommercial对应工作/学校账户,OneDrive对应个人账户,代码中做了 fallback 处理 - 用
FSO.BuildPath拼接路径可避免手动输入斜杠导致的格式错误
方案二:将SharePoint库映射为网络驱动器
把目标SharePoint库映射成Windows网络驱动器(比如Z:),这样FSO可以像访问本地文件夹一样访问:
- 打开SharePoint库页面,点击右上角的「同步」按钮旁的「复制路径」,选择SMB格式的路径(格式类似
\\xxx.sharepoint.com@SSL\DavWWWRoot\sites\...) - 在Windows中右键「此电脑」→「映射网络驱动器」,粘贴复制的路径并分配驱动器号
- 修改代码中的路径为映射后的驱动器路径,比如
SourceFolderPath = "Z:\TodayRateSheet"
方案三:直接操作SharePoint云端文件(无需本地同步)
如果不需要依赖本地同步,可以使用SharePoint CSOM(客户端对象模型)或Microsoft Graph API直接操作云端文件,这种方法不依赖FSO,适合无本地同步的场景,但需要配置权限和引用相关组件,实现相对复杂。
内容的提问来源于stack exchange,提问作者Travis Sharpe
相关产品推荐
相关产品推荐

