Excel宏保存路径异常:无法保存至局域网目标路径求助
问题分析与解决方案
核心问题
你混淆了ThisWorkbook和ActiveWorkbook的概念:
ThisWorkbook指的是包含当前宏代码的工作簿,你的宏工作簿存放在Excel启动目录XLSTART中,所以ThisWorkbook.Path返回的是C:\Users\XXXX\AppData\Roaming\Microsoft\Excel\XLSTARTActiveWorkbook才是你实际要操作的、位于局域网共享文件夹的June.XLS文件
修正后的代码
方案1:保存到当前打开文件的同一文件夹(推荐)
直接用ActiveWorkbook.Path获取目标共享文件夹路径,自动适配文件位置:
Dim targetName As String Dim targetPath As String ' 获取目标文件名(取第一个工作表名+ xlsx后缀) targetName = ActiveWorkbook.Sheets(1).Name & ".xlsx" ' 获取当前文件所在的局域网共享路径 targetPath = ActiveWorkbook.Path & "\" & targetName ' 保存为无宏的xlsx格式 ActiveWorkbook.SaveAs Filename:=targetPath, FileFormat:=xlOpenXMLWorkbook
方案2:硬编码局域网路径(适合固定路径场景)
如果共享路径固定不变,可以直接写死路径,注意路径需用双反斜杠转义:
Dim targetName As String targetName = ActiveWorkbook.Sheets(1).Name & ".xlsx" ' 共享路径格式:\\IP地址\共享文件夹名\ ActiveWorkbook.SaveAs Filename:="\\100.0.0.0\2023\" & targetName, FileFormat:=xlOpenXMLWorkbook
额外说明
xlOpenXMLWorkbook是无宏xlsx文件对应的格式常量,若宏中提示找不到该常量,可直接用对应数值51代替- 确保你对目标局域网共享文件夹拥有写入权限,否则保存操作会失败
- 只有当宏代码直接写在要处理的文件中时,才适合用
ThisWorkbook操作目标文件
内容的提问来源于stack exchange,提问作者Rodrigo Villalobos
相关产品推荐
相关产品推荐

