隐藏 VBA 代码(项目已锁定,无法查看)拒绝用户表单宏

Hidden VBA Code (project locked from viewing ) denies User Form Macro

我想我面临着下面 link 中 Gaus Shaikh 提出的同样问题,但我觉得当时他没有被理解。我试着在这个话题上多花一些话来帮助你们支持。

我创建了另一个问题,因为在我看来,Gaus 问题的标题可能会被误解。

总而言之,我们在处理生成用户表单的 excel 宏时遇到了问题。实际上,如果 VBA 项目受密码保护,宏就会起作用。奇怪的是,如果我只是隐藏代码(Visual Basic 编辑器 -> VBA 项目属性 -> 保护 -> 锁定项目查看 -> 插入密码 -> 确定),宏甚至无法工作如果项目没有密码保护。

我被困在这里了。我找不到解决方案。你们有什么想法吗? (我使用的是 excel 2013)

提前致谢!

高斯谢赫问题: VBA password protected project not opening userform

N.B: 基本上,任何生成用户表单的宏都会给出“run-time 错误 50289。项目受到保护。”例如,以下生成空用户表单的宏在代码被隐藏时会失败,而在代码被显示时会起作用。

Public Sub goUserForm()

    Dim mainframe As Object

    'Set main frame
    Set mainframe = ThisWorkbook.VBProject.VBComponents.Add(3)        

    'Show the form
    VBA.UserForms.Add(mainframe.Name).Show

End Sub

要完全理解这个问题,请在您的工作表上尝试这个宏,然后隐藏您的代码。保存、关闭并打开文档。除非您显示代码,否则宏将无法运行。

好的,现在更清楚了。由于 VBA 项目受到保护,您即使不使用代码也无法访问它。任何其他代码都可以。 所以,这行不通

Set mainframe = ThisWorkbook.VBProject.VBComponents.Add(3) 
VBA.UserForms.Add(mainframe.Name).Show

像这样不访问 VBA 项目的代码可以工作

UserForm2.Hide
UserForm1.Show