对象'_Workbook'的方法'SaveAs'失败VBA

Posted

技术标签:

【中文标题】对象\'_Workbook\'的方法\'SaveAs\'失败VBA【英文标题】:Method 'SaveAs' of object '_Workbook' failed VBA对象'_Workbook'的方法'SaveAs'失败VBA 【发布时间】:2017-10-18 15:20:01 【问题描述】:

我有一个连接到数据库的工作簿,当您刷新工作簿时,它会刷新工作簿中的数据。然后运行一个宏以将新的(原始)数据保存在两个不同的位置,然后宏将对该原始数据进行分析,并稍后将同一工作簿保存在其他 4 个位置。 当我尝试第一次保存原始数据时,我可以保存到第一个位置,但是当它移动到第二个位置时,我收到错误:运行时错误'1004':方法'SaveAs'对象“_Workbook”失败。这两个位置都是有效的位置。

这是宏中的一个子程序,用于保存第一个文件:

Sub saveraw()

Dim rdate As String
Dim rawfilename As String, rawfilename1 As String
Dim mywb As Workbook

Set mywb = ActiveWorkbook

rdate = Format(Now(), "mm-dd-yy")

rawfilename = "\\sw\mes\PS\SC\SCM_Supply_Execution\Spares\This Weeks Number Database\This Weeks Numbers(raw) " & rdate & ".xlsm"
rawfilename1 = "\\sw\mes\PS\SC\SCM_Shared\Spares Reports\This Weeks Numbers(raw) " & rdate & ".xlsm"

mywb.Save

Worksheets("Sheet2").Range("A2") = Null

Application.DisplayAlerts = False

mywb.SaveAs Filename:=rawfilename
mywb.SaveAs Filename:=rawfilename1

Application.DisplayAlerts = True

End Sub

我也试过用的方法

ActiveWorkbook.SaveAs

代替两个 mywb.SaveAs,但这也不起作用。

【问题讨论】:

如果您尝试使用该文件名手动保存到该位置会发生什么情况? 是的,问题出在权限上。如果我进行更改并尝试保存,它将无法正常工作。我忽略了这一点。谢谢 【参考方案1】:

作为测试,针对只有您有权访问的文件位置运行代码。我注意到第二个命令中提到了共享驱动器,因此可能有人已经在其中并且无法保存。

现在将显示警报设置为 true。

另外,当您运行测试宏时,请确保您没有打开任何 Windows 资源管理器窗口并在此处反馈结果,如果再次调试,我会提供帮助。

从表面上看,代码看起来不错。

【讨论】:

是的,问题是特权.. 我忽略了这一点,花了一个小时认为我的代码很糟糕,唯一的问题是没有写入权限 -_- 感谢您的帮助【参考方案2】:

试试这个

ActiveWorkbook.SaveAs Filename:="\\sw\mes\PS\SC\SCM_Supply_Execution\Spares\This Weeks Number Database\This Weeks Numbers(raw) " & rdate & ".xlsm" _
        , FileFormat:=xlOpenXMLWorkbookMacroEnabled

如果文件已经存在,这可能会出现问题,因为随后会弹出一个窗口询问您是否要覆盖它

虽然我认为错误是由于该特定位置的权限问题或连接问题

【讨论】:

问题是特权...我被授予只读访问权限,直到您这么说,我才想到没有写入权限,我刚刚获得了写入权限,并且可以正常工作。谢谢

以上是关于对象'_Workbook'的方法'SaveAs'失败VBA的主要内容,如果未能解决你的问题,请参考以下文章

运行时错误“1004”:对象“_Workbook”的方法“SaveAs”失败

使用 VBA 密码保护进行保存时出现错误消息“运行时错误‘1004’:对象‘_Workbook’的方法‘SaveAs’失败”

EXCEL workbook.saveas 函数详解

Workbook.SaveAs() 到 Office 2011 for Mac 中的不同文件夹

如何使用自动覆盖的workbook.saveas

Workbook.SaveAs 使 Excel 与某些工作簿而非其他工作簿一起崩溃