【发布时间】:2015-05-16 05:07:07
【问题描述】:
我公司当地办事处的一名员工正在处理工作簿 Sheet1 中的宏,该宏将使用 Application.Run 在另一个工作簿中运行宏:
Private Sub CommandButton1_Click()
Wfile = Range("B2").Value
Wpath = Range("B3").Value
Workbooks.Open Wpath + "/" + Wfile
Application.Run Wfile & "!copy_rates_macro"
End Sub
他试图打开/使用的工作簿受到各种可能的保护(它的所有工作表都受到保护,它的 VBAProject 也受到保护。
运行宏时,会弹出 1004 运行时错误消息窗口,提示“无法运行宏 'Name.xlsm!copy_rates_macro'。此工作簿中可能没有该宏,或者所有宏都可能被禁用。”
我做了很多研究,我认为将以下内容放入受保护的文件中会起作用:
Private Sub Workbook_Open()
' Dim wSheet As Worksheet
' For Each wSheet In Worksheets
' wSheet.Protect Password:="pw", UserInterFaceOnly:=True
' Next wSheet
Application.EnableEvents = False
End Sub
请注意,上面注释掉的部分是我对已经存在并且必须保留在那里的代码的补充。此外,“pw”是每个工作表和 VBAProject 的密码。
这段代码没有什么不同(我运行它时没有注释掉它),我想它与受保护的 VBAProject 有关。
这个请求是否可能,或者它是一个失败的原因?我的老板不希望公开受保护工作簿的密码,但我找不到解决办法。
感谢您的帮助。
【问题讨论】:
-
我认为不取消对 VBAProject 的保护就无法做到。