Открыть excel файл макросом: Как открыть конкретную книгу в Excel пошаговое руководство
Содержание
Как запустить файл с включенными макросами?
Хитрости »
22 Октябрь 2011 Дмитрий 97875 просмотров
Основные понятия (26) Сводные таблицы и анализ данных (10) Графики и диаграммы (5) Работа с VB проектом (12) Power BI и Power Query (20) |
Условное форматирование (5) Списки и диапазоны (5) Макросы(VBA процедуры) (68) Разное (43) Баги и глюки Excel (4) |
В данной статье хочу описать вкратце способ, как можно запустить какой-то файл Excel с разрешенными макросами. Зачем это надо: бывают ситуации, когда Вы высылаете файл с макросами и хотите, чтобы его открывали только с разрешенными макросами, т.к. без них он бесполезен (как правило через макросы выполняются некие операции при работе с файлом). В принципе есть способы заставить пользователя работать с файлом только при включенных макросах. Самый простой (способ 1) — это заставить его именно разрешить их выполнение, прежде чем начать работу с файлом.
Вариант 1:
Самый простой и легко исполняемый способ. Создаете в нужной книге новый лист. Называете его «WARNING». На листе мы пишем инструкцию по действиям пользователя для включения макросов. Что-то типа:
Для работы с файлом требуется разрешить макросы!
Excel 2003: Сервис- Безопасность- Уровень макросов «Низкий»
Excel 2007: Меню- Параметры Excel- Центр управления безопасностью- Параметры центра управления безопасностью- Параметры макросов- Разрешить все макросы;
Excel 2010: Файл- Параметры- Центр управления безопасностью- Параметры центра управления безопасностью- Параметры макросов- Разрешить все макросы.
И скрываем все листы в книге, кроме листа «WARNING». Теперь в остается дело за малым: в модуль книги вставляете следующий код:
'Данная процедура скрывает перед закрытием книги все листы, 'кроме листа "WARNING" Private Sub Workbook_BeforeClose(Cancel As Boolean) Application. ScreenUpdating = False Dim wsSh As Worksheet Sheets("WARNING").Visible = -1 For Each wsSh In ThisWorkbook.Sheets If wsSh.Name <> "WARNING" Then wsSh.Visible = 2 Next wsSh ThisWorkbook.Save End Sub 'Данная процедура показывает перед открытием книги все листы, 'кроме листа "WARNING" Private Sub Workbook_Open() Dim wsSh As Worksheet For Each wsSh In ThisWorkbook.Sheets wsSh.Visible = -1 Next wsSh ThisWorkbook.Sheets("WARNING").Visible = 2 End Sub |
Из кода видно, что если макросы будут отключены, то код Workbook_Open не будет выполнен. Следовательно пользователь увидит только лист «WARNING», на котором у нас написаны инструкции по включению макросов, которые ему в любом случае придется выполнить, если есть желание работать с файлом.
Вариант 2:
Этот способ подразумевает создание отдельного файла, который будет запускать файл Excel. Я предоставлю на выбор либо скрипт VBS, либо созданный мной файл EXE. В чем прелесть. При использовании данного способа совершенно неважно запущен ли уже у пользователя Excel или нет, разрешены ли макросы. Скрипт или EXE сам все запустит и разрешит.
Что такое скрипт VBS? Это обычный текстовый файл, сохраненный с расширением VBS. Такой файл распознается операционной системой как исполняемый и код, расположенный в нем, запускается при двойном щелчке на файле. Чтобы создать такой файл необходимо: создать обычный текстовый файл. Открыть его. Записать в него текст:
test Sub test() Dim objXL Dim Secur Set objXL = CreateObject("Excel.Application") objXL.Visible = TRUE secur = objXL.AutomationSecurity objXL.AutomationSecurity = 1 objXL.Workbooks.Open replace(Wscript.ScriptFullName,".vbs",".xls"),,,,"4321" objXL.AutomationSecurity = secur End Sub |
Сохранить. Поменять расширение текстового файла с .txt на .vbs.
Если не отображается расширение:
Панель управления—Свойства папки(для Win 7 — Параметры папок)- вкладка Вид— Снять галочку с «Скрывать расширение для зарегистрированных типов файлов»
Скрипт запускает файл Excel, имя которого совпадает с именем скрипта и расположенного в той же папке. В примере к статье это файл «Test». Таким образом Вы можете давать любое имя файлу Excel и файлу скрипта, лишь бы они совпадали. Т.е. назвав скрипт «Run», Вы должны будете и файл Excel назвать так же — «Run». В приведенном коде так же есть возможность указать пароль для открытия файла(в тексте скрипта это пароль 4321, но установить можно любой через свойства файла). Как установить пароль я описывал в этой статье: Как удалить книгу из самой себя. Пароль как правило устанавливается для того, чтобы при попытке запустить файл Excel без скрипта был запрошен пароль. Т.е. без скрипта файлом не воспользоваться. Есть и ложка дегтя — после открытия файла пароль может удалить любой, кто его открыл.
Плюсы использования скрипта:
- пользователь совершает минимум действий
- макросы разрешены как ни крутись
Минусы:
- необходимость создания отдельного файла и привязка к имени
- возможность подсмотреть пароль к файлу, просто сменив расширение файла-скрипта на . txt
- возможность сменить/снять пароль к файлу после его открытия скриптом(можно избежать, внеся некоторый код в файл. Например сохранять только с нужным паролем). В примере пароль к файлу: 4321
Файл EXE. Долго пояснять не буду. Основные моменты все те же, что и со скриптом, т.к. в принципе это одно и то же, за исключением того, что код файла EXE нельзя подсмотреть, просто сменив расширение. А это значит, что и пароль к файлу подсмотреть тоже не получится(без использования специальных навыков и программ). Создается такой файл в специальной программной среде: С++, VisualBasic, Delphi и т.п. Основной минус: нельзя поменять пароль к файлу, не скомпилировав новый файл EXE. Т.е. если планируете использовать не с одним файлом, то надо всем им давать один и то же пароль, либо вообще не устанавливать пароль на открытие.
В примере вы найдете файлы с примерами реализации всеми описанными способами:
Скачать пример:
Run_Wit_Macro.zip (28,1 KiB, 3 871 скачиваний)
Также см. :
Почему не работает макрос?
Управление безопасностью макросов
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Accessapple watchMultexPower Query и Power BIVBA управление кодамиБесплатные надстройкиДата и времяЗапискиИПНадстройкиПечатьПолитика КонфиденциальностиПочтаПрограммыРабота с приложениямиРазработка приложенийРосстатТренинги и вебинарыФинансовыеФорматированиеФункции Excelакции MulTExссылкистатистика
Как открыть все рабочие книги в папке
Ссылка на оригинал Время создания: 12.10.2019 20:24 Раздел: !Закладки — VBA — Excel Запись: xintrea/mytetra_db_adgaver_new/master/base/1570883191s7duh5kxsk/text. html на raw.githubusercontent.com | ||||
Как открыть все рабочие книги в папке Автор Дмитрий Якушев На чтение2 мин. Просмотров79 Что делает макрос: Представьте, вы написали классный макрос, который автоматизирует работу одного Excel- файла. Теперь проблема заключается в том, что вам нужно перейти в папку, открыть каждую Содержание
Как макрос работает В этом макросе, мы используем функцию Dir. Функция Dir возвращает строку, которая представляет собой имя файла. С её помощью в указанной папке мы возьмём имя каждого файла (с расширением “.xlsx”), затем будем открывать каждый файл, запускать макрос и, наконец, закрывать файл после сохранения. Код макроса
Как работает этот код
| ||||
|
Запись макроса для открытия определенных книг при запуске Excel
Excel 2013 Больше. ..Меньше
Предположим, вы хотите записать макрос для открытия рабочих книг, которые вы используете каждый день при запуске Excel. Для этого вы можете создать макрос Auto_Open. Вы также можете автоматически запускать макрос при открытии книги.
Прежде чем приступить к работе, убедитесь, что на ленте отображается вкладка Developer . Если его там нет, сделайте следующее:
Щелкните Файл > Параметры > Настроить ленту .
В разделе Настройка ленты в поле Основные вкладки установите флажок Разработчик .
Нажмите OK .
Автоматическое открытие книг при запуске Excel:
Нажмите Разработчик > Запись макроса .
В поле Имя макроса введите Auto_Open .
В поле Store macros in выберите Personal Macro Workbook .
Это сделает макрос доступным каждый раз, когда вы открываете Excel.
org/ListItem»>Нажмите OK .
Щелкните Файл > Откройте и выберите файлы, над которыми вы работаете каждый день. Файлы могут находиться в нескольких местах. Нажмите Shift, чтобы выбрать несколько файлов в одной папке.
Щелкните Разработчик > Остановить запись .
Когда вы закроете Excel, вам будет предложено сохранить изменения, которые вы внесли в личную книгу макросов. Нажмите «Да», чтобы ваш макрос запускался при каждом запуске Excel.
При каждом запуске Excel книги, включенные в макрос, будут автоматически открываться.
Чтобы напомнить вам, что делает этот макрос, введите описание в поле Описание . Вы также можете оставить это поле пустым.
Автоматически запускать макрос при открытии книги
Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Больше…Меньше
Возможно, вы захотите, чтобы записанный вами макрос запускался автоматически при открытии определенной книги. Следующая процедура использует пример, чтобы показать вам, как это работает. Вы также можете автоматически запускать макросы при запуске Excel.
Прежде чем приступить к работе, убедитесь, что на ленте отображается вкладка Developer . Дополнительные сведения см. в разделе Показать вкладку «Разработчик».
Чтобы использовать приведенный ниже пример, откройте новую книгу.
Важно! Код VBA нельзя отменить, поэтому обязательно протестируйте свой код на пустой книге или на копии существующей книги. Если код не делает то, что вы хотите, вы можете закрыть книгу без сохранения изменений.
Нажмите Разработчик > Visual Basic .
В VBA Project Explorer с левой стороны разверните папку VBA Project для своей книги, затем дважды щелкните модуль ThisWorkbook . Если вы не видите Project Explorer, вы можете перейти к View > Project Explorer или нажмите Ctrl+R .
В открывшемся справа окне модуля вставьте следующий код:
Частная подпрограмма Workbook_Open() 'Поместите сюда свой код Конечный переходник
org/ListItem»>Сохраните книгу как книгу Excel с поддержкой макросов (*xlsm) и закройте ее.
Вставьте записанный код в подпроцедуру между Sub и End Sub строк.
Закройте редактор Visual Basic (ничего сохранять не нужно).
При следующем открытии книги код, добавленный в Workbook_Open 9Процедура 0008 запустится автоматически.
Прежде чем приступить к работе, убедитесь, что на ленте отображается вкладка Developer . Для этого:
В меню выберите Excel > Настройки… > Лента и панель инструментов .
В категории Настройка ленты в списке Основные вкладки выберите Разработчик флажок.
Нажмите Сохранить .
Чтобы использовать приведенный ниже пример, откройте новую книгу.
Важно! Код VBA нельзя отменить, поэтому обязательно протестируйте свой код на пустой книге или на копии существующей книги. Если код не делает то, что вы хотите, вы можете закрыть книгу без сохранения изменений.
Щелкните Разработчик > Visual Basic .
В VBA Project Explorer с левой стороны разверните папку VBA Project для своей книги, затем дважды щелкните модуль ThisWorkbook .
В открывшемся справа окне модуля вставьте следующий код:
Частная подпрограмма Workbook_Open() 'Поместите сюда свой код Конечный переходник
Вставьте записанный код в процедуру Sub между строками Sub и End Sub .
Закройте редактор Visual Basic (ничего сохранять не нужно).