我想编写一个函数来取消保护VBA项目的工作簿,该工作簿在与具有此功能的工作程序相同的实例中打开。我试图在this answer中修改Siddharth Rout的代码,但我无法弄清楚如何为我感兴趣的VBProject启动特定的VBA属性窗口解锁。
作为测试,我试图遍历实例中的VBProjects以查看哪个对应于所需的工作簿,然后打开该项目的VBA Properties窗口:
Sub findVBProj()
Dim prj As VBProject
Dim correctPrj As VBProject
For Each prj In Application.VBE.VBProjects
If prj.filename = "C:\Users\xyz\Desktop\testUnlock.xlsm" Then
Set correctPrj = prj
End If
Next
correctPrj.VBE.CommandBars(1).FindControl(id:=2578, recursive:=True).Execute
End Sub
但是这并没有为correctPrj
启动VBA属性窗口,因此会触发密码提示;相反,它打开包含包含findVBProj()
的模块的项目的属性窗口,这是有道理的,因为在运行findVBProj()
时选择了该模块。如何使correctPrj
的属性窗口打开?