我已编写此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
任何帮助表示赞赏!
答案 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