|
|||||||
Как программно снять пароль с VBA проекта?
Время создания: 16.03.2019 23:43
Текстовые метки: Объектная модель, VBOM
Раздел: Разные закладки - VBA - VBA управление кодами
Запись: xintrea/mytetra_db_adgaver_new/master/base/1512730954ni0cguev3b/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Как программно снять пароль с VBA проекта? Большинство наверняка знает как установить/снять пароль с VBA проекта вручную:
Предположу, что не очень многим может понадобиться снимать пароль с проекта VBA средствами самого VBA. Но все же данная тема имеет спрос, как я смог убедиться, общаясь на форумах. Прежде всего это может пригодиться тем, кто создает свои приложения на VBA и периодически нужно вносить изменения в уже созданные проекты(например копирование модулей и кодов из одного проекта в другой). Сразу оговорюсь: я не рассматриваю ситуации, когда вам неизвестен пароль к проекту. Предполагается, что вы знаете пароль и можете снять его вручную. Я лично знаю два способа снять пароль программно: через метод SendKeys и использовании функций API. Т.к. второй способ довольно громоздкий и сложный для понимания - я в данной статье опишу лишь первый способ. Он не содежит каких-либо изысков и довольно прост. Sub Unprotect_VBA() Dim objVBProject As Object, objVBComponent As Object, objWindow As Object Workbooks.Open "C:\1.xls" Set objVBProject = ActiveWorkbook.VBProject 'просматриваем все окна проекта в поисках окна снятия защиты For Each objWindow In objVBProject.VBE.Windows ' Type = 6 - это нужное нам окно If objWindow.Type = 6 Then objWindow.Visible = True objWindow.SetFocus: Exit For End If Next 'вводим пароль и подтверждаем ввод SendKeys "~1234~", True: SendKeys "{ENTER}", True 'здесь Ваш код по внесению изменений в проект Set objVBProject = Nothing: Set objVBComponent = Nothing: Set objWindow = Nothing ActiveWorkbook.Close True End Sub
Код сначала открывает необходимую книгу, а затем снимает пароль с проекта. "C:\1.xls" - полный путь к книге, включая расширение файла. "~1234~" - пароль к проекту. Тильды нужны, но они не являются частью кода. Т.е. сам код это - 1234. Способ, как видите, действительно очень прост, но это порождает и недостатки. Главный недостаток: снятие пароля данным методом весьма нестабильно и иногда может не срабатывать. Так же во время работы данного кода крайне нежелательно пользоваться мышью и клавиатурой. Точнее даже не нежелательно, а просто нельзя, если вам необходим положительный результат. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|