|
|
|
| Раньше не было необходимости, а сегодня удивился.
Попросили сделать простую вещь "защита от дурачка".
При открывании эксель файла выскакивает UserForm, которая просить ввести пароль.
Пароль храниться прямо в коде и просто сравнивается с введенным пользователем.
Все хорошо работает, если не открывать файл с Shift-ом.
Оказывается при этом блокируется запускт макрососв.
И как с этим боротся ?
Чтобы все таки срабатывал макрос на Workbook_Open() ?
Если есть мысли или опыт, буду рад услышать.
Спасибо! | |
|
| |
|
|
|
| Год назад пробовал подписывать VBA проект цифровым сертификатом - при этом получалось, что отключить Auto_Open было невозможно никакими Shift'ами (возможно потому, что сертификат соответствовал "надежному издателю").
Впрочем, при этом все равно нужно защищать VBA проект паролем, а до 2007 он снимается "на раз", а в случае с сертификатом, нужно еще защищать от перехода в окно VBE по Alt+F11, т.к. сертификат можно просто удалить .
И еще можно почитать http://www.finmodeling.ru/?p=431 (особенно комментарии). | |
|
| |
|
|
|
| Я же не могу подписывать, например, своим сертификатом корпоративные файлы, лежащие в локальной сети компании.
Да и прав скорее всего у меня на такие действия нет.
Должно, как мне кажется, быть более простое решение, как с Аксесом. | |
|
| |
|
|
|
| Тогда наверное самое простое создать надстройку (xlam), в которую и поместить Auto_Open.
Сейчас проверил - вроде по Shift'у запуск надстройки не отключается.
Кстати, какой Excel? | |
|
| |
|
|
|
| эксель 2007
а разве надстройка сама не создается в теле макроса ?
если есть пример, было бы интересно посмотреть.
Спасибо | |
|
| |
|
|
|
| Сама собой надстройка не создается. Надстройку легко сделать самому для экспериментов:
1. открыть новый Ех файл
2. в редакторе VBA добавить модуль
3. создать процедуру:
Sub Auto_Open()
MsgBox "Auto_Open XLAM"
End Sub
|
4. сохранить как "Надстройка Excel (*.xlam) - пусть будет путь, какой предлагает Excel
5. еще раз войти в редактор VBA
6. исправить MsgBox на, к примеру
чтобы отличать из каких мест выполняется Auto_Open
7. далее на закладке "Разработчик" жмакнуть "Надстройки", и отметить галкой ранее сохраненный файл xlam
8. сохранить как "Книга с поддержкой макросов (*.xlsm) - путь - любой
9. закрыть Ех
Теперь можно экспериментировать с разными Shuft'ами, параметрами безопасности, ...
Все же думаю, что без цифрового сертификата все-же не обойтись, т.к. надстройка будет всегда запускаться при снятой галке "Все надстройки приложений должны быть подписаны надежными издателями", что не есть гуд
Кстати самоподписной сертификат несложно самому сделать
P.S. Все описание на основе MSE2010, к сожалению 2007 нет | |
|
| |
|
|
|
| Впрочем чушь несу.
Надстройка будет запускаться для ВСЕХ файлов | |
|
| |
|
|
|
| у меня и 2010 стоит, потихоньку переползаем на него.
Но как я писал в первом посте, при открывании экселя с зажатым щифтом никакой auto_open не срабатывает. По крайней мере у меня. Может политика безопасности так настроена или еще что-то. Файл просто открывается.
Кстати, вроде как лучше использовать Workbook_Open()
он выполняется раньше, а это auto_open - атавизм для совместимости со старыми версиями (так пишут на формумах) | |
|
| |
|
|
|
| Не знаю насчет атавизма, но у меня на 2010м Workbook_Open() не отрабатывается | |
|
| |
|
|
|
| http://www.mrexcel.com/archive/VBA/12067.html | |
|
| |
|
|
|
|
В том то и дело, что при зажатом Shift'е ни один макрос не отработается, в том числе и Workbook_Open() | |
|
| |
|
|
|
| не зря я Эксель не очень люблю :) | |
|
| |
|
|
|
| хрень какая-то
Сегодня файл с шифтом не открывается, что случилось за ночь - ХЗ.
Всем спасибо. | |
|
| |
|
|
|
| shift Устал | |
|
| |
|
23 Кб. |
|
| Прикрепил пару файликов. Положить в C:/Proba. Запускать Book1.xlsm.
У меня не удается заблокировать запуск макросов Shift'ом. А как у вас?
+ не забыть снять галку - указывал выше | |
|
| |
|
|
|
| выскакивает MsgBox "..."
но у меня сейчас и так срабатывают макросы, ХЗ почему.
Такое решение ИМХО совсем "не кошерное", когда файл лежит в расшаренной папке в корпоративной сети с различными правами доступа у пользователей.
Вплоть до того, что этот файл настроек будет удален кем-нибудь втечение первых суток. | |
|
| |
|
|
|
| Должно выскакивать ДВА MsgBox'а - первый с XLAM на конце (это от надстройки), второй с XLSM (это от основной книги).
Правами доступа можно и запретить удаление/редактирование. Это вполне нормальный способ. Кроме того, наверняка в корп. сети уже есть такая папочка (ну не верю, что всем пользователям разрешено править все файлы в корп. сети). Так что это как раз не проблема.
Почитав тут разные умные книжечки, стало очевидно, что от блокировки Shift'ом защищены только надстройки . Отсюда - это единственно возможный путь решения, на мой взгляд.
Если есть желание двигаться именно в этом направлении, то попробую еще покопать - на предмет блокировки такой настройки при открытии других Ех файлов. | |
|
| |
|
12 Кб. |
|
| Вот один из вариантов =>> | |
|
| |
|
42 Кб. |
|
| На всякий случай - как ...:
1. положить файл в любую дирку
2. запустить Ех => закладка Разработчик => Надстройки => нажав Обзор, выбрать файл | |
|
| |
|
|
|
| "защита от дурачка" ? - Ну пожалуй дурачок и не знает про shift.
И смотря от чего файл надо защитить, например, можно просто поставить пароль - защитить книгу.
Этот пароль даже прогами долго вскрывать :) | |
|
| |