【问题标题】:Hidden VBA Code (project locked from viewing ) denies User Form Macro隐藏的 VBA 代码(项目锁定无法查看)拒绝用户表单宏
【发布时间】:2017-11-09 08:54:20
【问题描述】:

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

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

回顾一下,我们在处理生成用户表单的 excel 宏时遇到了问题。实际上,如果 VBA 项目受密码保护,则宏可以工作。奇怪的一点是,如果我只是隐藏代码(Visual Basic 编辑器-> VBA 项目属性-> 保护-> 从查看中锁定项目-> 插入密码-> 确定),即使项目是宏也不会工作不受密码保护。

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

提前谢谢你!

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

注: 基本上,任何生成用户表单的宏都会给出“运行时错误 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

要完全理解该问题,请在您的工作表上尝试此宏,然后隐藏您的代码。保存、关闭并打开文档。除非您显示代码,否则该宏将不起作用。

【问题讨论】:

  • 旧帖子中的代码无法正常工作。所以,我认为你必须提供更多信息和一些代码片段
  • 感谢您的快速回复 Storax。我已经编辑了帖子,添加了有关错误的更多信息。

标签: vba excel view locking userform


【解决方案1】:

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

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

像这样不访问 VBA 项目的代码将起作用

UserForm2.Hide
UserForm1.Show

【讨论】:

  • 感谢您的提示 Storax。如果您的项目中有用户表单,那么您的代码就可以工作。另一方面,如果您需要通过宏在项目中创建和添加用户表单怎么办?如何在不访问项目的情况下更改以下行,从而避免错误? Set mainframe = ThisWorkbook.VBProject.VBComponents.Add(3)VBA.UserForms.Add(mainframe.Name).Show
  • 如果您需要通过代码添加用户表单,您必须先解锁 VBA 项目。据我所知,没有其他办法。
  • 我可以通过编码保护我的代码不被查看。但是,如果我禁用此保护,请运行宏并再次自动启用它,代码将在下次重新启动之前可见:(
  • 是的,你是对的。无论如何,使用密码进行代码保护并不是很安全。 stackoverflow.com/questions/1026483/…
  • 是的,我想是的。谢谢斯托拉克斯。
猜你喜欢
  • 1970-01-01
  • 2017-11-07
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 2013-09-01
  • 1970-01-01
  • 2022-08-16
相关资源
最近更新 更多