从SharePoint路径工作簿导出VBA模块报错的解决方法咨询
错误原因
当源工作簿从SharePoint打开时,ThisWorkbook.Path返回的是WebDAV格式的URL(而非本地文件系统路径),而VBA的VBComponent.Export方法仅支持写入本地文件系统或已映射的网络驱动器路径,无法直接写入WebDAV地址,因此触发运行时错误50012。
解决方案
方案1:使用本地临时文件夹中转(推荐)
通过系统临时文件夹作为中间存储,绕开SharePoint路径的限制,具体实现如下:
Dim ProofName As Variant Dim sDate As String Dim CashShN As Variant Dim wbkSource As Workbook Dim wbkTarget As Workbook Dim CSVModName As String Dim tempFolder As String ' 获取系统临时文件夹路径 tempFolder = Environ("TEMP") & "\" sDate = Format(ActiveWorkbook.Sheets(1).Cells(4, 2).Value, "mmddyy") ProofName = ThisWorkbook.Name CashShN = ActiveWorkbook.Name Set wbkSource = Workbooks(ProofName) Set wbkTarget = Workbooks(CashShN) ' 生成本地临时文件路径 CSVModName = tempFolder & "CSV Module " & sDate & ".bas" ' 导出模块到临时文件 wbkSource.VBProject.VBComponents("Module2").Export CSVModName ' 从临时文件导入到目标工作簿 wbkTarget.VBProject.VBComponents.Import CSVModName ' 可选:删除临时文件,避免残留 Kill CSVModName
方案2:映射SharePoint库为网络驱动器
如果需要直接操作SharePoint路径:
- 将目标SharePoint文档库映射为本地网络驱动器(如Z:\)
- 确保工作簿通过映射的驱动器打开,此时
ThisWorkbook.Path会返回网络驱动器路径,原代码可正常运行 - 需确保对映射的驱动器有写入权限
注意事项
- 需在Excel信任中心启用信任对VBA项目对象模型的访问(路径:文件>选项>信任中心>信任中心设置>宏设置)
- 系统临时文件夹默认具备写入权限,无需额外配置
内容的提问来源于stack exchange,提问作者PhantomBanker
相关产品推荐
相关产品推荐

