Хитрости »
Основные понятия (22)Здесь собраны статьи, в которых разъясняются базовые понятия работы в Excel и VBA, а так же проблемы, с которыми сталкивается большинство начинающих
Сводные таблицы и анализ данных (5) Раздел поможет изучить сводные таблицы и научиться их использовать "на полную"
Графики и диаграммы (4) Раздел поможет научиться создавать диаграммы и графики в Excel, в том числе нестандартные
Работа с VB проектом (10) С помощью статей раздела вы научитесь создавать процедуры программно и выполнять различные операции с объектами самого VBA
Power BI и Power Query (5) Здесь собраны статьи, раскрывающие различные возможности мощнейшего инструмента для визуализаций бизнесс-процессов Power BI и надстройки для Excel Power Query
Условное форматирование (5) Этот раздел поможет поближе познакомиться с Условным форматированием на примерах различных ситуаций
Списки и диапазоны (5) Статьи, посвященные работе не только с выпадающими списками, но и с диапазонами и хитростями их применения в рабочих файлах
Макросы(VBA процедуры) (59) Статьи раздела направлены на изучение VBA с детальным разбором кодов. Множество статей с примерами кодов под всевозможные ситуации с комментариями и пояснениями
Разное (34) Собраны статьи, которые не подходят ни под одну из представленных выше категорий или входят сразу в несколько. Но эти статье не менее полезные!

Как запустить файл с включенными макросами?

В данной статье хочу описать вкратце способ, как можно запустить какой-то файл Excel с разрешенными макросами. Зачем это надо: бывают ситуации, когда Вы высылаете файл с макросами и хотите, чтобы его открывали только с разрешенными макросами, т.к. без них он бесполезен (как правило через макросы выполняются некие операции при работе с файлом). В принципе есть способы заставить пользователя работать с файлом только при включенных макросах. Самый простой (способ 1) - это заставить его именно разрешить их выполнение, прежде чем начать работу с файлом.

Вариант 1:
Самый простой и легко исполняемый способ. Создаете в нужной книге новый лист. Называете его "WARNING". На листе мы пишем инструкцию по действиям пользователя для включения макросов. Что-то типа:
Для работы с файлом требуется разрешить макросы!
Excel 2003: Сервис- Безопасность- Уровень макросов «Низкий»
Excel 2007: Меню- Параметры Excel- Центр управления безопасностью- Параметры центра управления безопасностью- Параметры макросов- Разрешить все макросы;
Excel 2010: Файл- Параметры- Центр управления безопасностью- Параметры центра управления безопасностью- Параметры макросов- Разрешить все макросы.

И скрываем все листы в книге, кроме листа "WARNING". Теперь в остается дело за малым: в модуль книги вставляете следующий код:

Из кода видно, что если макросы будут отключены, то код Workbook_Open не будет выполнен. Следовательно пользователь увидит только лист "WARNING", на котором у нас написаны инструкции по включению макросов, которые ему в любом случае придется выполнить, если есть желание работать с файлом.


Вариант 2:
Этот способ подразумевает создание отдельного файла, который будет запускать файл Excel. Я предоставлю на выбор либо скрипт VBS, либо созданный мной файл EXE. В чем прелесть. При использовании данного способа совершенно неважно запущен ли уже у пользователя Excel или нет, разрешены ли макросы. Скрипт или EXE сам все запустит и разрешит.
Что такое скрипт VBS? Это обычный текстовый файл, сохраненный с расширением VBS. Такой файл распознается операционной системой как исполняемый и код, расположенный в нем, запускается при двойном щелчке на файле. Чтобы создать такой файл необходимо: создать обычный текстовый файл. Открыть его. Записать в него текст:

Сохранить. Поменять расширение текстового файла с .txt на .vbs.
Если не отображается расширение:
Панель управления-Свойства папки(для Win 7 - Параметры папок)- вкладка Вид- Снять галочку с "Скрывать расширение для зарегистрированных типов файлов"

Скрипт запускает файл Excel, имя которого совпадает с именем скрипта и расположенного в той же папке. В примере к статье это файл "Test". Таким образом Вы можете давать любое имя файлу Excel и файлу скрипта, лишь бы они совпадали. Т.е. назвав скрипт "Run", Вы должны будете и файл Excel назвать так же - "Run". В приведенном коде так же есть возможность указать пароль для открытия файла. Это сделано для того, чтобы при попытке запустить файл Excel без скрипта был запрошен пароль. Т.е. без скрипта файлом не воспользоваться.
Плюсы использования скрипта:

  • пользователь совершает минимум действий
  • макросы разрешены как ни крутись

Минусы:

  • необходимость создания отдельного файла и привязка к имени
  • возможность подсмотреть пароль к файлу, просто сменив расширение файла-скрипта на .txt
  • возможность сменить/снять пароль к файлу после его открытия скриптом(можно избежать, внеся некоторый код в файл. Например сохранять только с нужным паролем). В примере пароль к файлу: 4321

Файл EXE. Долго пояснять не буду. Основные моменты все те же, что и со скриптом, т.к. в принципе это одно и то же, за исключением того, что код файла EXE нельзя подсмотреть, просто сменив расширение. Создается этот файл в специальной программной среде: С++, VisualBasic, Delphi и т.п. Основной минус: нельзя поменять пароль к файлу, не скомпилировав новый файл EXE. Т.е. если планируете использовать не с одним файлом, то надо всем им давать один и то же пароль, либо вообще не устанавливать пароль на открытие.

В примере вы найдете файлы с примерами реализации всеми описанными способами:
Скачать пример:

  Run_Wit_Macro.zip (28,1 KiB, 2 344 скачиваний)

Также см.:
Почему не работает макрос?
Управление безопасностью макросов


Статья помогла? Сделай твит, поделись ссылкой с друзьями!

Поиск по меткам

Access Multex Outlook Power BI Power Query и Power BI VBA работа в редакторе VBA управление кодами Бесплатные надстройки Дата и время Диаграммы и графики Записки Защита Защита данных Интернет Картинки и объекты Листы и книги Макросы и VBA Настройка Поиск данных Почта Программы Работа с приложениями Работа с файлами Разработка приложений Сводные таблицы Списки Тренинги и вебинары Финансовые Форматирование Формулы и функции Функции Excel Функции VBA Ячейки и диапазоны акции MulTEx вебинар ссылки статьи тренинг
Обсуждение: оставлено 40 коммент.
  1. Сегрей:

    @den11
    а вы точно уверены, что версия 2007 года это 12, а не 13, так как 2010 это 14!

  2. Сергей, совершенно точно.

  3. den11:

    Здравствуйте, Дмитрий! Можно ли вторым или третьим способом запустить файл excel из rar- архива с паролем?

  4. den11:

    Здравствуйте, Дмитрий! Решил эту задачу, при условии, что winrar находится в корневом каталоге. А если в Program Files, то скрип не находит winrar. Как я понял проблема в пробеле в названии папки. Не подскажите, как решить эту проблему?

  5. den11:

    Что самое интересное - если я помещаю скрипт в Program Files и определяю к нему путь через wscript.scripfullname и потом соединяю с winrar, то все работает. Хотя если вывожу через msgbox, то пути абсолютно одинаковые. Не пойму почему не работает.

  6. Елена:

    Добрый день! По варианту 1. Как сделать, чтобы макрос, который скрывает все листы (кроме "warning"), работал до закрытия файла, но после стандартного диалогового окна "сохранить изменения в файле?" и выбора "да"?
    Сейчас получается, что если внести изменения, потом выйти, то файл автоматически сохраняется без стандартного окна сохранения (высокая вероятность сохранения ошибок). Если из макроса на закрытие убрать автосохранение, то при выходе появляется диалоговое окно, все листы уже скрыты, если нажать "отменить", то файл не работает, нужно выбрать да/нет (при уже скрытых листах) и заново зайти в файл для продолжения работы.

  7. Александр:

    Возникает проблема с выбором версии Excel при запуске. Нашел статью возможно с решением:
    http://www.sql.ru/forum/1046212/vybor-versii-excel-kodom
    но к сожалению совсем не владею прог.языком, не подскажите как соединить совет в части:
    ------
    Попробуйте так:
    Shell """Путь к Excel 2013"" ""Путь к файл.xlsx"""
    Set xlBook = GetObject("Путь к файл.xlsx")
    Set xlApp = xlBook.Application
    ------
    с Вашим файлом, чтобы принудительно запускать Excel 2007?

    Спасибо

  8. Здравствуйте,Дмитрий. Пытаюсь приладить ваше решение по запуску файла excel. Второй вариант с VBA скриптом у меня работает нормально. Но есть желание сделать исполняемый файл с паролем на открытие из рабочего VBA скрипта. Пробовал несколько программ, но ничего не вышло. Вот самая рабочая, которую я нашел ScriptCryptor создает ехе файл и даже пытается открыть ехсеl файл с некоторой автоматом запускаемой процедурой. Но обламывается на этапе выполнения этой самой процедуры, как я понимаю из-за того, что файл открывается в режиме [только для чтения]. Что заставляет компилятор создавать такой код или это сам excel чудит? VBS скрипт обращается к excel в нормальном режиме и процедура выполняется.
    Пожалуйста, посоветуйте, чем и как лучше скомпилировать и полностью обфусцировать. Вы не сталкивались с такой проблемой?

  9. ivan31888:

    Дмитрий, скажите, а как в первом варианте отобразить не все листы, а только 1 конкретный лист?
    Спасибо!

Поделитесь своим мнением

Комментарии, не имеющие отношения к комментируемой статье, могут быть удалены без уведомления и объяснения причин. Если есть вопрос по личной проблеме - добро пожаловать на Форум


Для оформления сообщений Вы можете использовать следующие тэги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Логин
Наши партнеры
Перейти
Перейти
Счетчики
Анализ сайта

Яндекс.Метрика
© 2016 Excel для всех  Войти