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’失败”