我在启动时使用以下代码来编译我的工作簿以防止任何与 Active-X 相关的错误:
Private Sub ThisWorkbook_Open()
Set compileMe = objVBECommandBar.FindControl(Type:=msoControlButton, ID:=578)
compileMe.Execute
End Sub
此代码使 VBE 中的命令栏自动化,并且在未受保护的工作簿中工作得很好。当我锁定 VBE(密码保护)时,调试->编译选项被禁用,这导致上述代码运行出错。
有什么解决方法吗?例如,取消保护 VBE 然后运行上述代码并再次保护它不受同一个工作簿的影响?我知道这不会是一项基本任务,因为 AFAIK 没有用于此的 API,但是否有任何解决方案最好(出于稳定性目的)不使用发送密钥的解决方案?
编辑: 对与问题重复的混淆表示歉意。您链接为重复的问题解释了如何在另一个 excel 实例中解锁不同工作簿中的 VBE,这没问题,因为它工作正常,但是需要一个额外的 excel 文件作为“解锁文件”打开另一个实例中的相同文件以只读方式打开。
我想要做的是让相同的工作簿自行解锁,问题是一旦窗口打开要求输入密码,代码就会停止。这样做的原因是它将窗口作为模态窗口打开,因此需要某种形式的用户输入才能继续(隐藏或卸载窗口)。所以真的,我只是想知道是否有其他方法可以解决这个问题,或者我是否过度复杂化了事情。