如何在wb.SaveAs函数上修复错误1004

时间:2019-06-10 14:32:00

标签: excel vba

这是我的第一个大型VBA项目。我正在自动从多个来源提交多个报告。上周,我完成了实现需要使用的两个报告的工作,并且wb.SaveAs函数正在运行。现在,我添加了第三个源,wb.SaveAs不再起作用。

我尝试引用映射的网络驱动器,尝试了直接引用,并且尝试将路径放入变量中。这些都不起作用。我搜索了该网站和其他网站,但发现类似问题的答案不适用。

'This is only the code for the loading and saving part
Dim wbTime As Workbook
Dim wsTime As Worksheet
Dim wbRP As Workbook
Dim wsRPDic As Worksheet
Dim wbTdB As Workbook
Dim wsTdB As Worksheet
Dim wbMots As Workbook
Dim wsMots As Worksheet


'Setting all the workbooks and worksheets to be used
Set wbTime = Workbooks("Timesheets.xls")
Set wsTime = wbTime.Worksheets("TimeSheets")
Set wbRP = Workbooks.Open("\\BUR-SERV\Data\xxx\xxx\xxx xxx\Calculs-Analyses\Rapport Productivit? Prod 2019.xlsx")
Set wsRPDic = wbRP.Worksheets("Dictionary")
Set wbTdB = Workbooks.Open("\\BUR-SERV\Data\xxx\xxx\xxx xxx\Suivis, Rapport et TdB\Tableau de Bord.xlsx")
Set wsTdB = wbTdB.Worksheets("Tableau de Bord Complet - 2019")
Set wbMots = Workbooks.Open("\\BUR-SERV\Data\xxx\xxx\xxx xxx\Calculs-Analyses\Raw Reports\Rapport de productivit?.xls")
Set wsMots = wbMots.Worksheets("Sheet2")


'Save and close section. This is at the very end of the code and both wb.SaveAs don't work now
wbTime.SaveAs Filename:="\\BUR-SERV\Data\xxx\xxx\xxx xxx\Calculs-Analyses\Raw Reports\Done\Heures_" & Replace(curWeek, "/", "-") & ".xls", FileFormat:="xlExcel8"
wbMots.SaveAs Filename:="\\BUR-SERV\Data\xxx\xxx\xxx xxx\Calculs-Analyses\Raw Reports\Done\Rapport de Productivit?_" & Replace(curWeek, "/", "-") & ".xls", FileFormat:="xlExcel8"
wbRP.Save
wbTdB.Save
wbTime.Close
wbMots.Close
wbRP.Close
wbTdB.Close

我试图将两个报告保存在一个完整的文件夹中,并用报告的星期将其重命名。相反,我得到错误代码:1004-由应用程序或对象定义的错误

2 个答案:

答案 0 :(得分:2)

Workbook.SaveAs调用失败通常意味着路径或文件名有问题。

SaveAs成员调用与进行该成员调用所需的片段分离。

即,将Filename参数表达式放入新的局部变量中:

Dim newFilename As String
newFilename = "\\BUR-SERV\Data\xxx\xxx\xxx xxx\Calculs-Analyses\Raw Reports\Done\Rapport de Productivit?_" & Replace(curWeek, "/", "-") & ".xls"
Debug.Print newFilename
Stop

现在运行此命令,当执行停止时,您应该会看到为Filename参数传递的实际字符串值(Ctrl + G弹出调试/即时窗格)。看起来像有效的路径和文件名吗?将其复制到剪贴板,返回Excel并按F12 / SaveAs,然后尝试保存具有该名称的文件。

您应该会收到一条详细的错误消息,告诉您它到底有什么问题。

?字符高度可疑(在文件名中是非法的),\xxx\xxx\xxx占位符看起来像实际路径可能很深-验证总长度是否在255个字符以下。

答案 1 :(得分:0)

我已通过删除wb.saveAs中的文件格式声明解决了该问题。拥有.xls本身就能提供正确的文件格式。

删除.xls并保持文件格式无效。

在保存文件时,我还删除了curWeek字符串的冗余。自从更新格式以来,字符串格式已经使用“-”而不是“ /”。但是,该位对saveAs函数没有任何干扰。

谢谢您的帮助