You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用VBA将Excel备份保存到需身份验证的SharePoint并解决运行报错

VBA保存Excel到SharePoint报错解决方案

核心报错原因

  • 文件名包含非法字符:时间格式中使用了:,Windows和SharePoint均不允许文件名出现冒号
  • MapNetworkDrive不支持HTTPS协议路径:WScript.Network的映射方法仅支持SMB协议的UNC路径,无法直接映射SharePoint的HTTPS链接
  • 用户名格式不符合要求:SharePoint Online验证需要完整的邮箱格式账号,仅填账号前缀会验证失败

修复后的代码

' 替换为SharePoint对应的UNC路径
ServerShare = "\\mycom.sharepoint.com@SSL\sites\Backupvehculo\Shared Documents\General\Copia\"
UserName = "你的完整邮箱账号,如xxx@mycom.com"
password = "你的账号密码"
Dim DriveLetter As String
DriveLetter = "Z:" ' 选择一个未被占用的盘符

Set NetworkObject = CreateObject("WScript.Network")

' 先尝试断开已存在的同盘符映射,避免冲突
On Error Resume Next
NetworkObject.RemoveNetworkDrive DriveLetter, True, True
On Error GoTo 0

' 映射网络驱动器
NetworkObject.MapNetworkDrive DriveLetter, ServerShare, False, UserName, password

' 修复文件名,把时间的冒号替换为短横线
nombrearchivo = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 5) & VBA.Format(VBA.Now, "_dd-mm-yyyy-hh-mm-ss")
        
' 直接用映射后的盘符路径保存,稳定性更高
ActiveWorkbook.SaveAs Filename:= _
    DriveLetter & "\" & nombrearchivo & ".xlsm" _
    , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
        
' 用完断开映射可选,不需要长期保留可以加上
' NetworkObject.RemoveNetworkDrive DriveLetter, True, True
Set NetworkObject = Nothing

额外注意事项

  • 如果不想映射盘符,也可以直接在保存时使用UNC格式的SharePoint路径,无需额外映射,只要你本地已经登录过SharePoint账号并记住凭据即可
  • 如果报错仍然存在,可以先手动在资源管理器地址栏输入上述UNC路径,确认能正常打开且账号密码验证通过后再运行代码

内容的提问来源于stack exchange,提问作者Gemmabr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:24:05