Защитите паролем макросы второй книги от первой, используя VBA - PullRequest
2 голосов
/ 27 апреля 2011

У меня есть рабочая книга, которая создает вторую рабочую книгу (используя ThisWorkbook.SaveCopyAs) для удобного представления данных пользователям. Он полагается на макросы для части обработки.

Однако меня попросили сделать эти макросы недоступными для пользователей. Им по-прежнему нужно их запускать, но для просмотра / редактирования их необходим пароль. Я могу понять, как это сделать с помощью графического интерфейса (VBA Editor -> щелкните правой кнопкой мыши VBAProject -> VBAProject Properties -> Protection, установите флажок и введите пароль), но я не нашел способа сделать это с помощью VBA. Кажется, функция Workbook.Protect блокирует все , кроме VBA.

Если я пытаюсь применить его к исходной книге, я получаю «Невозможно выполнить операцию, так как проект защищен», так что это тоже не работает.

Я работаю в 2010 году, но книга должна быть совместима с 2003, так что никаких новых хитростей нет. (

Ответы [ 3 ]

1 голос
/ 27 апреля 2011

Это метод, который описывает установку пароля проекта без использования sendkeys http://www.standards.com/Office/SetVBAProjectPassword.html

0 голосов
/ 07 февраля 2013

У меня была похожая проблема. Мне нужен был код Excel для заполнения созданных пользователем новых листов, но я хотел защитить проект паролем. Это будет прекрасно работать, пока я не использую проекцию пароля, но Excel не позволит генерировать код на новых листах с защитой паролем.

Решение было интересным. Дайте вашему проекту простое имя или инициалы. Что-то, что люди могут легко найти.

Вы защищаете свой проект паролем и сохраняете полученный файл как XLA (добавьте).

Затем снимите защиту с рабочей книги, переименуйте файл (на случай, если вы допустите ошибку) и удалите из него весь код, модули, классы, формы и т. Д. Сохраните новый извлеченный файл Excel.

Теперь откройте новый раздетый файл и добавьте xla в TOOLS / adds. Затем перейдите в редактор VBA, Ссылки и найдите ваш проект с новым именем и ссылкой (вам, возможно, придется один раз сохранить и снова открыть, чтобы найти под ссылками).

Вот и все. новый файл, пустой от всего кода, будет работать с использованием старого кода, но у вас не будет доступа к нему без пароля. В то же время старый код может размещать код на новых рабочих листах, как и раньше, поскольку новый проект рабочей книги не защищен паролем

Я обнаружил, что если вы меняете местоположение, вашим пользователям может понадобиться найти ссылку в ссылках, но я уверен, что вы можете создать макрос для автоматического поиска и ссылки (этот макрос, конечно, будет виден в мир).

Я думаю, что это решит любую проблему с защищенным кодом.

Удачи

0 голосов
/ 27 апреля 2011

Этот пост может быть полезен для вас.Обратите внимание, что в комментариях говорится, что вам нужно добавить vbeext1.olb.

...