Rambler's Top100
Форум: MS ACCESSБолталкаVBVBA MS OfficeMS SQL server
Новые сообщения: 01000

Форум: VBA MS Office

Программирования для MS Office кроме ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Эксель запуск с Shift-ом
 
 автор: ДрЮня   (16.05.2011 в 20:54)   личное сообщение
 
 

Раньше не было необходимости, а сегодня удивился.
Попросили сделать простую вещь "защита от дурачка".
При открывании эксель файла выскакивает UserForm, которая просить ввести пароль.
Пароль храниться прямо в коде и просто сравнивается с введенным пользователем.
Все хорошо работает, если не открывать файл с Shift-ом.
Оказывается при этом блокируется запускт макрососв.
И как с этим боротся ?
Чтобы все таки срабатывал макрос на Workbook_Open() ?

Если есть мысли или опыт, буду рад услышать.
Спасибо!

  Ответить  
 
 автор: AlexSyr   (17.05.2011 в 04:05)   личное сообщение
 
 

Год назад пробовал подписывать VBA проект цифровым сертификатом - при этом получалось, что отключить Auto_Open было невозможно никакими Shift'ами (возможно потому, что сертификат соответствовал "надежному издателю").
Впрочем, при этом все равно нужно защищать VBA проект паролем, а до 2007 он снимается "на раз", а в случае с сертификатом, нужно еще защищать от перехода в окно VBE по Alt+F11, т.к. сертификат можно просто удалить .
И еще можно почитать http://www.finmodeling.ru/?p=431 (особенно комментарии).

  Ответить  
 
 автор: Дрюня   (17.05.2011 в 10:17)   личное сообщение
 
 

Я же не могу подписывать, например, своим сертификатом корпоративные файлы, лежащие в локальной сети компании.
Да и прав скорее всего у меня на такие действия нет.
Должно, как мне кажется, быть более простое решение, как с Аксесом.

  Ответить  
 
 автор: AlexSyr   (17.05.2011 в 12:31)   личное сообщение
 
 

Тогда наверное самое простое создать надстройку (xlam), в которую и поместить Auto_Open.
Сейчас проверил - вроде по Shift'у запуск надстройки не отключается.

Кстати, какой Excel?

  Ответить  
 
 автор: ДрЮня   (17.05.2011 в 13:05)   личное сообщение
 
 

эксель 2007
а разве надстройка сама не создается в теле макроса ?
если есть пример, было бы интересно посмотреть.
Спасибо

  Ответить  
 
 автор: AlexSyr   (17.05.2011 в 13:43)   личное сообщение
 
 

Сама собой надстройка не создается. Надстройку легко сделать самому для экспериментов:
1. открыть новый Ех файл
2. в редакторе VBA добавить модуль
3. создать процедуру:


Sub Auto_Open()
MsgBox "Auto_Open XLAM"
End Sub


4. сохранить как "Надстройка Excel (*.xlam) - пусть будет путь, какой предлагает Excel
5. еще раз войти в редактор VBA
6. исправить MsgBox на, к примеру


MsgBox "Auto_Open XLSM"


чтобы отличать из каких мест выполняется Auto_Open
7. далее на закладке "Разработчик" жмакнуть "Надстройки", и отметить галкой ранее сохраненный файл xlam
8. сохранить как "Книга с поддержкой макросов (*.xlsm) - путь - любой
9. закрыть Ех

Теперь можно экспериментировать с разными Shuft'ами, параметрами безопасности, ...
Все же думаю, что без цифрового сертификата все-же не обойтись, т.к. надстройка будет всегда запускаться при снятой галке "Все надстройки приложений должны быть подписаны надежными издателями", что не есть гуд
Кстати самоподписной сертификат несложно самому сделать

P.S. Все описание на основе MSE2010, к сожалению 2007 нет

  Ответить  
 
 автор: AlexSyr   (17.05.2011 в 13:56)   личное сообщение
 
 

Впрочем чушь несу.
Надстройка будет запускаться для ВСЕХ файлов

  Ответить  
 
 автор: ДрЮня   (17.05.2011 в 14:08)   личное сообщение
 
 

у меня и 2010 стоит, потихоньку переползаем на него.
Но как я писал в первом посте, при открывании экселя с зажатым щифтом никакой auto_open не срабатывает. По крайней мере у меня. Может политика безопасности так настроена или еще что-то. Файл просто открывается.

Кстати, вроде как лучше использовать Workbook_Open()
он выполняется раньше, а это auto_open - атавизм для совместимости со старыми версиями (так пишут на формумах)

  Ответить  
 
 автор: AlexSyr   (17.05.2011 в 14:30)   личное сообщение
 
 

Не знаю насчет атавизма, но у меня на 2010м Workbook_Open() не отрабатывается

  Ответить  
 
 автор: Силblч   (17.05.2011 в 15:00)   личное сообщение
 
 

http://www.mrexcel.com/archive/VBA/12067.html

  Ответить  
 
 автор: AlexSyr   (17.05.2011 в 16:03)   личное сообщение
 
 


В том то и дело, что при зажатом Shift'е ни один макрос не отработается, в том числе и Workbook_Open()

  Ответить  
 
 автор: Силblч   (17.05.2011 в 16:18)   личное сообщение
 
 

не зря я Эксель не очень люблю :)

  Ответить  
 
 автор: ДрЮня   (17.05.2011 в 15:09)   личное сообщение
 
 

хрень какая-то

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

  Ответить  
 
 автор: Силblч   (17.05.2011 в 15:16)   личное сообщение
 
 

shift Устал

  Ответить  
 
 автор: AlexSyr   (17.05.2011 в 16:08)   личное сообщение
23 Кб.
 
 

Прикрепил пару файликов. Положить в C:/Proba. Запускать Book1.xlsm.
У меня не удается заблокировать запуск макросов Shift'ом. А как у вас?
+ не забыть снять галку - указывал выше

  Ответить  
 
 автор: ДрЮня   (17.05.2011 в 17:15)   личное сообщение
 
 

выскакивает MsgBox "..."

но у меня сейчас и так срабатывают макросы, ХЗ почему.

Такое решение ИМХО совсем "не кошерное", когда файл лежит в расшаренной папке в корпоративной сети с различными правами доступа у пользователей.
Вплоть до того, что этот файл настроек будет удален кем-нибудь втечение первых суток.

  Ответить  
 
 автор: AlexSyr   (17.05.2011 в 19:17)   личное сообщение
 
 

Должно выскакивать ДВА MsgBox'а - первый с XLAM на конце (это от надстройки), второй с XLSM (это от основной книги).
Правами доступа можно и запретить удаление/редактирование. Это вполне нормальный способ. Кроме того, наверняка в корп. сети уже есть такая папочка (ну не верю, что всем пользователям разрешено править все файлы в корп. сети). Так что это как раз не проблема.
Почитав тут разные умные книжечки, стало очевидно, что от блокировки Shift'ом защищены только надстройки . Отсюда - это единственно возможный путь решения, на мой взгляд.
Если есть желание двигаться именно в этом направлении, то попробую еще покопать - на предмет блокировки такой настройки при открытии других Ех файлов.

  Ответить  
 
 автор: AlexSyr   (18.05.2011 в 19:41)   личное сообщение
12 Кб.
 
 

Вот один из вариантов =>>

  Ответить  
 
 автор: AlexSyr   (18.05.2011 в 19:46)   личное сообщение
42 Кб.
 
 

На всякий случай - как ...:
1. положить файл в любую дирку
2. запустить Ех => закладка Разработчик => Надстройки => нажав Обзор, выбрать файл

  Ответить  
 
 автор: Дмит   (18.05.2011 в 08:26)   личное сообщение
 
 

"защита от дурачка" ? - Ну пожалуй дурачок и не знает про shift.
И смотря от чего файл надо защитить, например, можно просто поставить пароль - защитить книгу.
Этот пароль даже прогами долго вскрывать :)

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList