运行时错误“1004”:object'_Workbook的方法'SaveAs'失败
用户有一个Excel电子表格,当他们去保存它,他们按下一个button,在macros内运行下面的VBA代码。 该脚本尝试将Excel电子表格保存到networking位置,并使用今天的date修改文件名。 间歇性的脚本将失败,并出现“运行时错误”1004“:object'_Workbook'方法'SaveAs'失败。 有谁知道原因是什么? 脚本是:
Public Sub Copy_Save_R2() Dim wbNew As Workbook Dim fDate As Date fDate = Worksheets("Update").Range("D3").Value Set wbNew = ActiveWorkbook With wbNew ActiveWorkbook.SaveAs Filename:="Q:\R2 Portfolio Prints\#Archive - R2 Portfolio\" & "R2 Portfolio - CEC A " & Format(fDate, "mm-dd-yyyy") End With Sheets("Update").Activate End Sub
正如雨果所说,这可能是映射驱动器的问题。 我更喜欢使用完整的UNCpath(\\ Thismachine \ …),以防工作簿在未设置映射驱动器的计算机上使用。
我以为缺less扩展可能是问题,但我只是在Excel 2013中testing它,它会自动添加.xlsx文件名。
这个问题可能是由于 wbNew
引用。这是完全没有必要的,不应该与 。 基本上,您应该有一个工作簿的引用,或者使用预定义的ActiveWorkbook
结合ActiveWorkbook
引用。 我还build议使用ThisWorkbook
,因为用户可能在代码运行时点击另一本书。
Public Sub Copy_Save_R2() Dim wbNew As Workbook Dim fDate As Date fDate = Worksheets("Update").Range("D3").Value Application.DisplayAlerts = False ThisWorkbook.SaveAs Filename:="Q:\R2 Portfolio Prints\#Archive - R2 Portfolio\R2 Portfolio - CEC A " & Format(fDate, "mm-dd-yyyy") & ".xlsx" Application.DisplayAlerts = True ThisWorkbook.Sheets("Update").Activate End Sub
编辑:添加Application.DisplayAlerts
命令以防止任何保存popup窗口,如使用.xlsx而不是.xlsm,并覆盖现有的副本。
编辑2018-08-11:添加转义反斜杠来修复UNCpath显示。 增加了关于With
语句不准确的陈述(见下面的评论)。 基本上,因为With
和End With
之间没有任何一个以.
,声明完全没有做任何事情。