gpt4 book ai didi

vba - 我无法使用 VBA 解锁 vbaproject

转载 作者:行者123 更新时间:2023-12-04 22:09:39 24 4
gpt4 key购买 nike

下面是我的功能,由于某种原因它不起作用。如果我在最后一个 if 语句中放置一个断点并删除发送“%{F11}”它确实有效。所以我的猜测是“%F11”不起作用。有人有想法吗?

Sub UnprotecPassword(wb As Workbook, ByVal projectPassword As String)
Dim currentActiveWb As Workbook

If wb.VBProject.Protection <> vbext_pp_locked Then
Exit Sub
End If
Set currentActiveWb = ActiveWorkbook
wb.Activate

SendKeys "%{F11}"
SendKeys "^r" ' Set focus to Explorer
SendKeys "{TAB}" ' Tab to locked project
SendKeys "~" ' Enter
SendKeys projectPassword
SendKeys "~" ' Enter

If (wb.VBProject.Protection = vbext_pp_locked) Then
MsgBox ("failed to unlock")
End If
currentActiveWb.Activate
End Sub

最佳答案

为了测试这一点,让我们创建一个名为 Book2.xlsm 的新工作簿。 .

出于测试目的,将此代码粘贴到 Book2 模块中。

Sub Book2Macro()

End Sub

用密码保护它,比如 a然后关闭它。这是锁定生效所必需的。

现在创建一个新的工作簿,比如 Book1,并在模块中粘贴此代码。
Sub Sample()
UnprotecPassword Workbooks("Book2.xlsm"), "a"
End Sub

Sub UnprotecPassword(wb As Workbook, ByVal projectPassword As String)
Dim currentActiveWb As Workbook

If wb.VBProject.Protection <> 1 Then
Exit Sub
End If

Set currentActiveWb = ActiveWorkbook

wb.Activate

SendKeys "%{F11}"
SendKeys "^r" ' Set focus to Explorer
SendKeys "{TAB}" ' Tab to locked project
SendKeys "~" ' Enter
SendKeys projectPassword
SendKeys "~" ' Enter

If (wb.VBProject.Protection = vbext_pp_locked) Then
MsgBox ("failed to unlock")
End If
currentActiveWb.Activate
End Sub

现在打开我们创建的第一个工作簿; Book2.xlsm。检查 Book2 的 VBA 编辑器,您会注意到它受密码保护。您还会注意到它是事件工作簿。激活 Book1点击 View Tab | Switch Workbooks | Book1
enter image description here

现在点击 Developer tab | Macros如果您看不到“开发人员”选项卡,那么我建议您查看 link。 .

enter image description here

点击 Sample Macro Dialog Box 中的宏你就完成了。

enter image description here

如果您检查 VBA 编辑器,您会注意到 Book2 的 VBA 编辑器现在已解锁/可访问。

根据您对它的使用,Sendkeys 是不可靠的。如果您正确使用它,那么这非常可靠:)

还有另一种解锁 VBA 密码的方法,但这非常复杂,涉及调用 FindWindow 等 API ......

关于vba - 我无法使用 VBA 解锁 vbaproject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11305192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com