VBA另存为运行时错误1004

时间:2017-04-28 08:15:25

标签: excel vba excel-vba runtime-error

我已编写此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

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

有关此代码的一些奇怪的事情,请参见右侧的评论:

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-您/您的计算机无权在该网络位置上书写

我已经测试了您的代码,我可以使用相同的1004运行时错误复制原因1