如何在同一实例中打开另一工作簿的VBA项目的属性?
我想编写一个函数,用于为与具有此函数的workboook在同一实例中打开的工作簿解除VBA项目的保护。我试图在中修改Siddharth Rout的代码,但我不知道如何为我感兴趣的VBA项目启动特定的VBA属性窗口 作为测试,我尝试迭代实例中的VBA项目,以查看哪个项目对应于所需的工作簿,然后打开该项目的VBA属性窗口:如何在同一实例中打开另一工作簿的VBA项目的属性?,vba,excel,Vba,Excel,我想编写一个函数,用于为与具有此函数的workboook在同一实例中打开的工作簿解除VBA项目的保护。我试图在中修改Siddharth Rout的代码,但我不知道如何为我感兴趣的VBA项目启动特定的VBA属性窗口 作为测试,我尝试迭代实例中的VBA项目,以查看哪个项目对应于所需的工作簿,然后打开该项目的VBA属性窗口: Sub findVBProj() Dim prj As VBProject Dim correctPrj As VBProject For Each prj In
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的属性窗口?正如Siddarth Rout在其接受的答案中明确指出的那样,我强调:但是,您必须确保要解除VBA保护的工作簿必须在单独的Excel实例中打开。如果要在同一实例中执行此操作,则需要类似Set的代码Application.VBE.ActiveVBProject=correctPrj。您实际上不需要单独的实例。@Rory,您测试过这个吗?我可以将ActiveVBProject设置为correctPrj,但随后.Execute打开了主工作簿的属性窗口。是的-它在2010年对我来说运行良好。我过去在2003年也使用过类似的代码