VBA 另存为运行时错误 1004

Posted

技术标签:

【中文标题】VBA 另存为运行时错误 1004【英文标题】:VBA Save as runtime error 1004 【发布时间】:2017-04-28 08:15:25 【问题描述】:

我已编写此 VBA 代码以将文件的新版本保存在指定位置。它在我的电脑上工作得很好,但在同事身上却不行。我们都使用相同版本的 Excel。我确保工作簿中没有密码,并确保他对文件具有完全权限。

Sub SaveNew()

Dim FileName As String
Dim Path As String
Dim Plnt As String
Dim PC As String
Dim fso As FileSystemObject

Set fso = CreateObject("Scripting.FileSystemObject")


'Save and calculate workbook before changes. Patse Filename so it doesnt change

ActiveWorkbook.Save
ActiveSheet.Calculate
ActiveSheet.Select
Range("c7").Copy
Range("c8").PasteSpecial xlPasteValues

'Define path and filename

Path = "Z:\UK\BFD\MAReports$\PPV & MR21\Stock Loss\Site Files\"
FileName = Sheets("Menu").Range("c8")
Plnt = Sheets("Menu").Range("c3")
PC = Sheets("Menu").Range("c5")


'Save new version

ThisWorkbook.SaveAs FileName:=Path & FileName & ".xlsm", FileFormat:=52

任何帮助表示赞赏!

【问题讨论】:

代码是否停在您同事计算机上的特定行? 是的,确实很抱歉。它停在下一行。 ThisWorkbook.SaveAs FileName:=Path & FileName & ".xlsm", FileFormat:=52 路径可能是特定于用户的。他可以访问这个文件夹吗? 错误信息是:Microsoft Excel 无法访问文件 'xxxx/xxxx/xxxx/xxxx' 有几个可能的原因。文件名或路径不存在,该文件正在被另一个程序使用,您尝试保存的工作簿与...同名...看起来它试图将其保存为临时文件名(“ 96314000") 【参考方案1】:

这段代码有一些奇怪的地方,见右边的 cmets:

ActiveWorkbook.Save 'saves the current book (that's ok)
ActiveSheet.Calculate 'only meaningful if you have calculation set to manual
ActiveSheet.Select 'why select the activesheet, you're not using the selection
Range("c7").Copy 'why copy/paste c7 to c8? if c7 is empty the saveAs fails
Range("c8").PasteSpecial xlPasteValues 'this is better: Range("c8").Value = Range("c7").Value

您遇到的问题可能是由以下原因引起的:

1- SaveAs 不保存副本,而是以新名称保存当前工作簿,因此如果另一台计算机上的另一个用户运行相同的宏并且 Z: 是共享驱动器,则其他用户/计算机将锁定相同​​的文件您要保存到的内容,直到在另一台计算机上关闭 Excel 并且其他用户/计算机和您/您的计算机对此文件具有相同的权限。

2- 您/您的计算机无权在该网络位置上写入

我已经测试了你的代码,我可以复制原因 1 并出现相同的 1004 运行时错误

【讨论】:

以上是关于VBA 另存为运行时错误 1004的主要内容,如果未能解决你的问题,请参考以下文章

Excel 2007 VBA ActiveWorkbook SaveAs 未保存...运行时错误 1004

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

另存为嵌入另一个 Excel 文件中的 Excel 文件

错误处理中的 Excel VBA 运行时错误 1004

excel运行VBA,出现1004错误

运行时错误 1004 文档未使用 Vba Excel 2016 保存