Уважаемые знатоки Очень нужно запустить Excel-файл с макросами (*.XLSM / *.XLSB) в EXCEL-е с любым уровнем безопасности, чтобы НЕ появлялись всякие сообщения о макросах и прочие предостережения ... а после закрытия этого файла - все Настройки безопасности в EXCEL должны остаться прежними, какими они были до запуска файла ...
Варианты решений и на этом форуме и на excel-vba.ru - уже морально устарели и работают только со старыми файлами *.XLS Возможно, на данный момент - уже появились и другие решения - подскажите кто знает ... Заранее Благодарен за любую помощь ...
Этот файл будет путешествовать по компьютерам разных пользователей с разным уровнем подготовки ... поэтому и желательно сделать по принципу : просто запустили и сразу заработало ...
ZVI, Владимир , я не знаю что там и как настраивается, но интересно, если безопасность регулируется через GPO, это тоже работает? (Шкурный интерес админа :-) )
Утилита RunXL.EXE позволяет загружать в MS Excel книги с включенными макросами, независимо от уровня безопасности макросов Excel. Поддерживаются расширения: XLAM, XLA, XLSM, XLSB, XLS Поиск файлов для загрузки производится в указанном выше порядке расширений. Утилита работает как с 32-битными, так и в 64-битными версиями Excel.
Файл RunXL.EXE нужно поместить в папку, где расположена книга с макросами, затем изменить имя утилиты на имя книги, оставив расширение EXE. Например, чтобы загрузить MyBook1.xlsm нужно переименовать RunXL.exe в MyBook1.exe Тогда при запуске MyBook1.exe будет открыт Excel с загрузкой книги MyBook1.xlsm с включенными макросами. Макросы автозапуска книги при этом выполняются, а все подключенные Excel-надстройки загружаются.
Никакие параметры безопасности операционной системы и Excel утилита не модифицирует. Используются только штатные методы, опубликованные Microsoft в MSDN. Уровни безопасности макросов Excel задают только ограничения на ручную загрузку книг пользователем, например, из проводника или из меню Excel. Эти уровни не относятся к загрузке книг с макросами из сторонних программ, включая данную утилиту. Безопасность при использовании утилиты должна задаваться ограничениями на установку и запуск сторонних EXE файлов.
Пользователь сам несет ответственность за неинформирование служб информационной безопасности об использовании утилиты. Любой, кто использует данную утилиту, использует ее на свой риск и обязуется не причинять с ее помощью какого-либо ущерба себе или другим лицам. Автор утилиты RunXL.exe не несет ответственности за прямые или косвенные проблемы и ущербы любого вида, связанные с использованием утилиты.
P.S. После обсуждения в сообщениях ниже (спасибо всем участникам!) прикладываю утилиту
Добрый вечер, Виталий. Здесь был, конечно, момент сомнения, но данная утилита запускается из EXE-файла, который пусть каждый сам решит, устанавливать ли и запускать ли по соображениям безопасности. Если же кто-то усматривает противопоказания, то удалю из темы, и пусть тогда пишут мне индивидуально, кому утилита нужна с персональной распиской, что ничего никому не испортят и не нарушат корпоративных правил безопасности. Но обычно там, где жесткие правила безопасности, посторонний EXE файл не установишь. Пока удалил утилиту из сообщения #10, жду комментариев по теме.
ZVI, Владимир, мне интересно что и где меняется и почему рядовой пользователь туда имеет доступ? Похоже на дыру в безопасности или это недокументированная фича?
БМВ написал: ...мне интересно что и где меняется...
Михаил, добрый вечер. Все делается штатными методами, которые документированы Microsoft и есть в открытом доступе в MSDN. Нужно просто знать особенности и правильное сочетание этих методов. Подробности, конечно, раскрывать не стану как раз по соображениям безопасности. Отмечу только, что для 64-битной версии пришлось учесть еще и нюансы SDI, чтобы активировать окно приложения Excel.
ну так уж и сразу- дыра!, просто может где-то где-то есть маленькая дырочка помните как в старом советском анекдоте: слет советский и японских автомобилестроителей. речь зашла о герметичности кузова. японцы: -- мы герметичность кузова проверяем так. садим в кузов кошку, закрываем окна и двери. утром приходим - если кошка сдохла, кузов герметичный, вохдух не поступает! советские переглянулись, и тут старый мастер: -- мы поступаем аналогично! садим кошку, все плотно закрываем. утром приходим - если кошка убежала, значит где-то есть ма-а-а--ленькая дырочка!
не пинайте строго - я из той эпохи. столько лет прошло - а мне все еще стыдно. что я был частью того общества помните Николая Алексевича Островского: "жизнь нужно прожить так, чтобы не было мучительно больно"... за то, что ты жил и молчал
ZVI написал: Нужно просто знать особенности и правильное сочетание этих методов.
Если эти методы позволяют обойти настройки безопасности GPO сделанные через административный шаблон ADMX/ADML, то для моего понятия это дыра. ключ HKCU\software\policies\microsoft\office\16.0\excel\security!vbawarnings =2 за сие отвечает и не доступен для редактирования рядовым пользователем.
БМВ написал: ключ ... за сие отвечает и не доступен для редактирования рядовым пользователем.
Безопасность устанавливается на загрузку в excel пользователем вручную (из проводника или из меню Excel), а не на загрузку программно, иначе многое чего не работало бы даже в самом Excel.
Владимир, я правильно понимаю, что если есть этот ключ HKCU\software\policies\microsoft\office\16.0\excel\security!vbawarnings DWORD 4, что устанавливает Disable all with notification, без возможности смены руками, то метод не работает? Если так- я спокоен.
Михаил, нет, этот ключ устанавливает защиту только на ручную загрузку Excel-файлов пользователем, а не на программную загрузку какой-либо программой. Утилита делает программно то, что может делать программно и штатно Excel или любая другая программа. Никакие параметры безопасности при этом не модифицируются. Не хотелось бы даже этого уточнять, так как это уже лишние подробности. Откорретировал сообщение #10, чтобы отразить эти нюансы.
Если не ошибаюсь, то подобный подход я описывал в этой статье: Как запустить файл с включенными макросами? Там есть пункты про vbs и exe. Плюс там можно задать пароль на открытие файла Excel, чтобы у пользователя не было соблазна запустить файл в обход утилиты.
ZVI написал: при запуске MyBook1.exe будет открыт Excel с загрузкой книги MyBook1.xlsm с включенными макросами.
..ага... отпустило.. тема то называется "Запуск файла с макросами (*.XLSM / *.XLSB) в EXCEL-е с любым уровнем безопасности", а здесь то .exe. Владимир, добрый день!
со своей стороны не вижу причин к беспокойству, ведь это .exe. Спасибо за развернутый ответ. БМВ, при запуске стороннего exe, меньше всего нужно беспокоится о безопасности макросов. Даже под пользователем мой exe сможет многое, макросы отдыхают. У вас, в вашем кластере администрирования, можно запустить сторонний exe? Владимир, не вдаваясь в подробности, можно же прописать следующий алгоритм в exe: 1.Открываем объект Excel (без визуализации) 2.Проставляем настройки безопасности нужные 3.Закрываем Excel, открываем нужный файл 4.Проставляем настройки обратно, отображаем excel (или сразу открываем в граф. режиме) 5.Завершаем процесс .exe Все работаем в файле с закрытыми настройками безопасности, но с работающими макросами. Это не секрет, все это делается и вручную (если не закрыты админами, не знаю можно ли это админить и работает ли в этом случае ваш продукт?), но вся соль в том, что это надо написать exe, а не открывать файлы Excel. Или соль в том, что при невозможности включения макросов вручную, можно это сделать через exe (даже в пользовательском режиме)?
Виталий, добрый вечер! Пример того, что Вы описали в п.п.1-5, есть по ссылке Дмитрия (The_Prist). У меня сделано иначе (ничего в настройках безопасности не модифицируется и если экземпляр Excel был открыт, то он и используется), но смысл аналогичен. Спасибо всем, принявшим участие в обсуждении! Выкладываю утилиту в сообщении #10.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
ZVI написал: Пример того, что Вы описали в п.п.1-5, есть по ссылке Дмитрия (The_Prist).
да, был невниметелен. Дмитрий, прочитал ваш пост, как всегда информативно. Вот приметился один момент: "Основной минус: нельзя поменять пароль к файлу, не скомпилировав новый файл EXE." Некоторое предположение от меня: А если не хранить пароль в exe, а запрашивать в консольке? Тогда и компилировать не надо ехе, и пароль можно поменять. Правда тогда отличий от скрипта почти не будет. Или в VBS нельзя вывести запрос пользователю на ввод пароля? Не пользовался скриптами.