2016-04-01 43 views
1

我在Excel2010中编写了以下宏,用于将操作按钮保存为共享驱动器上的密码保护文件。用于保存密码保护文件的宏

Private Sub Report_Click() 

Sheets("sheetname").SaveAs Filename:="\\shared_folder_path\master" & Sheets("sheetname").Range("A2"), _ 
          FileFormat:=52, _ 
          Password:="password", _ 
          WriteResPassword:="password", _ 
          ReadOnlyRecommended:=False, _ 
          CreateBackup:=False 

End Sub 

的问题是,我得到一个运行时错误“1004”

+0

我永远无法理解为什么知道Range(“A2”)中的内容并不重要。我在猜测它是一个日期,因此它包含诸如正斜杠之类的字符,这些字符在文件名中是非法的或混淆目标文件夹结构。如果你在A2中有一个日期,并且格式化了单元格,以便它可以作为文件名的一部分使用,则使用'.Range(“A2”).Text'。当然,如果是这样的话,你会看到一个很大的[错误消息弹出窗口](http://i.stack.imgur.com/vBN8f.png)。 – Jeeped

回答

0

我相信这是与你的FileName路径。

我测试了它,只是使用了一个链接到我的桌面的路径,它保存得很好。尝试使用到桌面的路径替换路径的相同测试。

您需要将计算机使用的分配驱动器号添加到网络文件夹路径中。

呈现相同的代码的更清洁的方式下面是与

Private Sub Report_Click() 
     Sheets("Sheet1").SaveAs _ 
      Filename:="C:\Users\user1\Desktop\" & Sheets("Sheet1").Range("A2"), _ 
      FileFormat:=52, _ 
      Password:="password", _ 
      WriteResPassword:="password", _ 
      ReadOnlyRecommended:=False, _ 
      CreateBackup:=False 
End Sub 

也有一看这How to programmatically save a file to a network drive in Excel为一个基本的例子。

+0

事实上,这是一个与路径有关的问题:单元格A2包含一个:导致路径无效的问题。删除:解决了问题。 –