gpt4 book ai didi

excel - 在 VBA 中以编程方式锁定项目

转载 作者:行者123 更新时间:2023-12-04 22:30:27 26 4
gpt4 key购买 nike

在工作中,我们使用 VBA,目前他们想锁定我们使用宏生成的报告。

我一直在尝试自动锁定一个项目(给定密码和工作簿名称),并且我已经部分成功地完成了以下代码块(我在那里找到的代码组合以及 SO 中的一些问题)。它以某种方式执行手动操作(进入 vbaprojects 属性,然后锁定)。

Sub LockVBAProject(nameWorkbookForMarket As String, pw As String)
With Workbooks(nameWorkbookForMarket).Application
'//execute the controls to lock the project\\
.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
'//activate 'protection'\\
.SendKeys "^{TAB}"
'//CAUTION: this either checks OR UNchecks the\\
'//"Lock Project for Viewing" checkbox, if it's already\\
'//been locked for viewing, then this will UNlock it\\
'//enter password (password is 123 in this example)\\
.SendKeys "{ }"

.SendKeys "{TAB}" & pw
'//confirm password\\
.SendKeys "{TAB}" & pw
'//scroll down to OK key\\
.SendKeys "{TAB}"
'//click OK key\\
.SendKeys "{ENTER}"
'the project is now locked - this takes effect
'the very next time the book's opened...
End With
End Sub

这段代码的问题在于 有时效果很好,有时却不行。我对这种“不确定的”行为有点困惑。有人可以阐明这个问题吗?

谢谢!

最佳答案

包括检查项目是否已经被保护/锁定,如果它已经被锁定,不要尝试锁定它

If Workbooks(nameWorkbookForMarket).VBProject.Protection = 1 Then Exit Sub

您还希望确保正确的项目处于事件状态,因此:
Set vbProj = Workbooks(nameWorkbookForMarket).VBProject

Set Application.VBE.ActiveVBProject = vbProj

If vbProj.Protection = 1 Then Exit Sub
' send keys

另一种方法是将报告的流程分成两部分,将代码保存在单独的工作簿中。在我看来,继续创建包含代码的新报告/工作簿是不寻常的。

关于excel - 在 VBA 中以编程方式锁定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53323655/

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