Открыть 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- файла. Теперь проблема заключается в том, что вам нужно перейти в папку, открыть каждую
книгу, запустить макрос, сохранить изменения, закрыть книгу, а затем открыть следующую.
Открытие каждой рабочей книги в папке, как правило, ручной процесс, который отнимает много времени.
Этот макрос решает проблему, как открыть все рабочие книги папки.

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как работает этот код
  4. Как использовать

Как макрос работает

В этом макросе, мы используем функцию Dir. Функция Dir возвращает строку, которая представляет собой имя файла. С её помощью в указанной папке мы возьмём имя каждого файла (с расширением “.xlsx”), затем будем открывать каждый файл, запускать макрос и, наконец, закрывать файл после сохранения.

Код макроса

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Sub OtkritVseKnigi()

‘Шаг 1:Объявляем переменные

Dim MyFiles As String

‘Шаг 2: Укажите нужную папку

MyFiles = Dir(«C:\Temp\*.xlsx»)

Do While MyFiles <> “”

‘Шаг 3: Открываем файлы один за другим

Workbooks.Open «C:\Temp\» &amp; MyFiles

‘Код макроса с действиями

MsgBox ActiveWorkbook.Name

ActiveWorkbook.Close SaveChanges:=True

‘Шаг 4: Следующий файл в папке

MyFiles = Dir

Loop

End Sub

Как работает этот код

  1. Объявляем переменную MyFiles (тип строчный), которая будет фиксировать имя каждого файла.
  2. В шаге 2, макрос использует функцию DIR, чтобы указать Тип файла и адрес папки. Обратите внимание, что код ищет файлы в формате xlsx. Это означает, что только .xlsx файлы будут передаваться. Если вы ищете .xls файлы, вам необходимо изменить расширение.
  3. Открываем файл, делаем некоторые действия (вы должны поместить в код макроса требуемые действия), а затем мы сохраняем и закрываем файл. В этом простом примере, мы вызываем окно с сообщением, чтобы показать имя каждого файла.
  4. Ищем снова по кругу, чтобы найти больше файлов. Если нет файлов, переменная MyFiles пустая.
    Если это так, то цикл и макрос завершается.

MyTetra Share v.0.58

Запись макроса для открытия определенных книг при запуске Excel

Excel 2013 Больше. ..Меньше

Предположим, вы хотите записать макрос для открытия рабочих книг, которые вы используете каждый день при запуске Excel. Для этого вы можете создать макрос Auto_Open. Вы также можете автоматически запускать макрос при открытии книги.

Прежде чем приступить к работе, убедитесь, что на ленте отображается вкладка Developer . Если его там нет, сделайте следующее:

  1. Щелкните Файл > Параметры > Настроить ленту .

  2. В разделе Настройка ленты в поле Основные вкладки установите флажок Разработчик .

  3. Нажмите OK .

Автоматическое открытие книг при запуске Excel:

  1. Нажмите Разработчик > Запись макроса .

  2. В поле Имя макроса введите Auto_Open .

  3. В поле Store macros in выберите Personal Macro Workbook .

  4. Это сделает макрос доступным каждый раз, когда вы открываете Excel.

  5. org/ListItem»>

    Чтобы напомнить вам, что делает этот макрос, введите описание в поле Описание . Вы также можете оставить это поле пустым.

  6. Нажмите OK .

  7. Щелкните Файл > Откройте и выберите файлы, над которыми вы работаете каждый день. Файлы могут находиться в нескольких местах. Нажмите Shift, чтобы выбрать несколько файлов в одной папке.

  8. Щелкните Разработчик > Остановить запись .

  9. Когда вы закроете 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 нельзя отменить, поэтому обязательно протестируйте свой код на пустой книге или на копии существующей книги. Если код не делает то, что вы хотите, вы можете закрыть книгу без сохранения изменений.

  1. Нажмите Разработчик > Visual Basic .

  2. В VBA Project Explorer с левой стороны разверните папку VBA Project для своей книги, затем дважды щелкните модуль ThisWorkbook . Если вы не видите Project Explorer, вы можете перейти к View > Project Explorer или нажмите Ctrl+R .

  3. В открывшемся справа окне модуля вставьте следующий код:

    Частная подпрограмма Workbook_Open()
    
    'Поместите сюда свой код
    
    Конечный переходник 

  4. org/ListItem»>

    Вставьте записанный код в подпроцедуру между Sub и End Sub строк.

    Закройте редактор Visual Basic (ничего сохранять не нужно).

  5. Сохраните книгу как книгу Excel с поддержкой макросов (*xlsm) и закройте ее.

При следующем открытии книги код, добавленный в Workbook_Open 9Процедура 0008 запустится автоматически.

Прежде чем приступить к работе, убедитесь, что на ленте отображается вкладка Developer . Для этого:

  1. В меню выберите Excel > Настройки… > Лента и панель инструментов .

  2. В категории Настройка ленты в списке Основные вкладки выберите Разработчик флажок.

  3. Нажмите Сохранить .

Чтобы использовать приведенный ниже пример, откройте новую книгу.

Важно! Код VBA нельзя отменить, поэтому обязательно протестируйте свой код на пустой книге или на копии существующей книги. Если код не делает то, что вы хотите, вы можете закрыть книгу без сохранения изменений.

  1. Щелкните Разработчик > Visual Basic .

  2. В VBA Project Explorer с левой стороны разверните папку VBA Project для своей книги, затем дважды щелкните модуль ThisWorkbook .

  3. В открывшемся справа окне модуля вставьте следующий код:

    Частная подпрограмма Workbook_Open()
    
    'Поместите сюда свой код
    
    Конечный переходник 

  4. Вставьте записанный код в процедуру Sub между строками Sub и End Sub .

    Закройте редактор Visual Basic (ничего сохранять не нужно).