На работе мы используем 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
Проблема этого кода в том, что иногда работает хорошо, а иногда нет.Я немного смущен этим «недетерминированным» поведением.Может ли кто-нибудь пролить свет на этот вопрос?
Спасибо!