Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Как запустить макрос при открытии файла эксель


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

Прежде чем начать, убедитесь, что отображаются вкладки " Разработчик " на ленте. Подробнее читайте вкладку "Разработчик".

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

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

  1. Откройте вкладку Разработчик и щелкните элемент Visual Basic.

  2. В левой части Проекта VBA разверните папку Проекта VBA для книги, а затем дважды щелкните модуль ЭтаКнига . Если вы не видите окно проекта, можно перейти в режим > Окно проекта или нажмите клавиши Ctrl + R.

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

    Private Sub Workbook_Open()
    ' Put your code here
    End Sub
  4. Вставьте код записанные в подпрограмме между строками Sub и End Sub.

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

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

При открытии книги, код, добавленных на процедуры Workbook_Open будет выполняться автоматически.

Прежде чем начать, убедитесь, что отображаются вкладки " Разработчик " на ленте. Это можно сделать:

  1. В меню выберите команду Excel > предпочтения... > ленты и панели инструментов.

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

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

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

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

  1. Откройте вкладку Разработчик и щелкните элемент Visual Basic.

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

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

    Private Sub Workbook_Open()
    ' Put your code here
    End Sub
  4. Вставьте код записанные в подпрограмме между строками Sub и End Sub.

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

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

При открытии книги, код, добавленных на процедуры Workbook_Open будет выполняться автоматически.

Как запустить макрос в Excel разными способами

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

В данной статье для Вас буде приведет пошаговый пример с картинками и фрагментом простейшего готового кода VBA.

Как выполнить макрос VBA в Excel

Например, самый простой способ запустить макрос для понимания, но сложный для реализации:

  1. Выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы».
  2. В появившемся окне «Макрос» из списка всех в первую очередь доступных макросов для данной рабочей книги Excel выберите любой понравившийся вам и нажмите на кнопку «Выполнить».

Программа макроса выполнить свои функции.

Теперь мы можем двигаться от простого к еще простейшему) Ведь запускать макросы таким способом весьма неудобно. Далее рассмотрим более простые варианты.

Полезный совет! Если вы хотите отредактировать макрос тогда выберите его в списке выше описанного инструмента и нажмите на кнопку «Войти», а не используйте кнопку «Изменить». С помощью кнопки войти вы всегда сможете перейти к исходному коду выбранного макроса. Автоматически откроется редактор Visual Basic именно в том месте где написан код данного макроса. Кнопка «Изменить» к сожалению, не для всех макросов работает одинаково.

Внимание! Макросы, созданные в надстройках Excel, могут быть по умолчанию не доступны в списке диалогового окна «Макрос» в целях политики безопасности. Ведь имена макросов в надстройках Excel обычно скрыты от сторонних пользователей. Но если ввести правильно соответственное значение в поле «Имя макроса:» то все кнопки в диалоговом окне будут активными. А значит готовы к работе с данным макросом из надстройки и пользователь является автором надстройки или доверительным лицом.



Запуск макроса с помощью горячих клавиш

Для каждого макроса в Excel можно присвоить свою комбинацию горячих клавиш. Благодаря этому вы можете вызывать свою макропрограмму при нажатии определенной комбинации клавиш на клавиатуре. Что может быть ее проще?

Чтобы присвоить свою комбинацию клавиш для определенного макроса следует сделать так:

  1. Снова выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы».
  2. В появившемся диалоговом окне «Макрос» выберите желаемую макропрограмму из списка и нажмите на кнопку «Параметры».
  3. В появившемся диалоговом окне «Параметры макроса» в поле ввода «Сочетание клавиш: CTRL+» введите маленькую или большую латинскую букву. И нажмите на кнопку ОК.

Теперь нажмите свою комбинацию горячих клавиш для вызова выбранного макроса. Как видно теперь вашему макросу присвоена комбинация горячих клавиш для быстрого вызова.

Обратите внимание! В диалоговом окне «Параметры макроса» доступно поле для ввода его описания. Данное описание будет доступно внизу при выборе макроса из списка. Рекомендуем всегда подписывать свои макросы. Такой пользовательский тон этики работы с Excel будет высоко оценен, когда список пополниться десятками макросов.

Полезный совет! Старайтесь не использовать популярные комбинации горячих клавиш для работы с Excel: CTRL+S; CTRL+A; CTRL+T; CTRL+C; CTRL+V; CTRL+SHIFT+L и т.п. Ведь тогда их предназначение будет изменено. В окне «Параметры макроса» так же присутствует возможность использовать в комбинациях клавиш клавишу SHIFT. Как только вы придадите фокус клавиатуры для поля ввода «Сочетание клавиш: CTRL+» и попытаетесь ввести большую букву для комбинации, естественно с использованием клавиши SHIFT на клавиатуре, сразу название поля ввода поменяется на «Сочетание клавиш: CTRL+ SHIFT+».

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

Как запустить макрос на панели быстрого доступа

Excel позволяет пользователям запускать макросы с помощью панели быстрого доступа к инструментам. Данная панель по умолчанию находиться в самом верху окна программы.

Чтобы запустить макрос с помощью панели быстрого доступа, требуется сделать так:

  1. Щелкните на самую последнюю кнопку на панели быстрого доступа (стрелка вниз), чтобы получить доступ к меню «Настроить панель», в котором необходимо выбрать опцию «Другие команды». В результате чего откроется окно «Параметры Excel», к которому можно было получить доступ и другим путем: «ФАЙЛ»-«Параметры»-«Панель быстрого доступа». Или щелкнув правой кнопкой мышки по любой панели Excel на любой закладке и выбрать опцию «Настройка панели быстрого доступа».
  2. В левом выпадающем списке «Выбрать команду из:» выберите опцию «Макросы».
  3. В левом списке элементов ниже выберите необходимый макрос и нажмите на кнопку «Добавить». В результате чего в правом списке элементов появиться кнопка для нового инструмента быстрого запуска вашего макроса. Справа от правого списка элементов можно использовать стрелки для настройки положения и порядка расположения кнопок инструментов на панели быстрого доступа. И нажмите ОК.

Теперь на панели быстрого доступа появилась еще одна кнопка для. Достаточно нажать на нее и сразу же запуститься макрос.

Полезный совет! Чтобы изменить внешний вид кнопки для макроса в окне «Параметры Excel»-«Панель быстрого доступа», из правого списка элементов «Настройка панели быстрого доступа» следует выделить макрос и нажать на кнопку «Изменить». Будет предложена небольшая галерея иконок для нового оформления внешнего вида кнопки запуска макроса с панели инструментов.

Главным недостатком размещения кнопки с макросом на панели инструментов является то, что кнопка будет всегда доступна для других файлов, даже когда файл с этим макросом будет закрыт. И если в такие случаи нажать на кнопку запуска макроса, тогда откроется файл где он находиться и только потом выполниться VBA код.

Запуск макроса с помощью кнопки на рабочем листе Excel

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

  1. Выберите инструмент: «РАЗРАБОТЧИК»-«Элементы управления»-«Вставить»-«Кнопка (элемент управления формы».
  2. Выделите курсором мышки место где и как будет вставлена кнопка для запуска макроса.
  3. В появившемся окне «Назначить макрос объекту» из списка доступным макросов выберите желаемый и нажмите на кнопку ОК.
  4. Теперь нужно назначить кнопку макросу. Правой кнопкой мышки щелкните по созданной кнопке и в появившемся контекстном меню выберите опцию «Изменить текст». Удалите старый и введите новый текст «Мой макрос».

После создания кнопки можно ее настроить, изменив ее размеры и положение на листе. Для этого снова щелкните правой кнопкой мышки по кнопке, а потом нажмите клавишу Esc на клавиатуре, чтобы скрыть контекстное меню. У кнопки появляться маркеры, с помощью которых можно изменять ее размеры. Наведите курсор мышки на любой маркер на гранях или углах кнопки и удерживая левую клавишу мышки перетягивайте, изменяя таким образом ее размеры. Теперь нажмите на кнопку левой кнопкой мышки и удерживая ее перемещайте кнопку по листу документа Excel в любое другое место. Чтобы затвердить все изменения кнопки сделайте щелчок левой кнопкой мышки в любую область листа (например, по любой ячейке) вне области кнопки.

Теперь если мы нажмем на кнопку левой кнопкой мышки сразу же выполниться назначенный ей код VBA.

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

Как запустить макрос при открытии или закрытии книги Excel?

Иногда требуется выполнить некоторые действия или расчеты при запуске рабочей книги в Excel. В этой статье рассмотрим на примере простого запроса пароля как реализуется автозапуск макроса в Excel.
Хочу сразу отметить, запуск макроса произойдет только в случае если в настройках безопасности (Сервис - Макрос - Безопасность) выбран низкий или средний уровень безопасности. При среднем уровне пользователь должен не отключать макросы при запросе.

Итак, Excel запущен, книга создана, VBE открыт (Alt+F11).

В окне Project Explorer (Ctrl+R) находим нашу книгу

в моем случае это Книга2. Разворачиваем группу объектов "Microsoft Excel Objects" и находим объект "ЭтаКнига"

кликаем по нему два раза. Перед нами откроется редактор кода объекта "ЭтаКнига".
Вы можете переименовать название объекта, выделив его и в окне Properties (F4) изменить свойство (Name).

Теперь создадим форму в нашей книге (как это сделать читаем здесь). На форму добавим две кнопки (CommandButton) и TextBox. Примерный вид следующий:

Эта форма будет появляться при открытии книги, в которую пользователю необходимо ввести пароль.
Ввод пароля всегда скрывается звездочками, точками и т.д. Сделаем и мы тоже самое. Для этого выделите TextBox и в его свойствах (окно Properties) найдите пункт PasswordChar. В его значение вы можете поставить любой символ, эти символы будут отображаться при вводе. Не будем отступать от традиций, поставим знак "звездочки"

Код для кнопки "Продолжить" следующий:

Private Sub CommandButton1_Click()
    If TextBox1.Text = "123" Then UserForm1.Hide _ 
    Else MsgBox "Вы ввели неверный пароль! Попробуйте еще раз."
End Sub

Пароль у нас "123", если введен верный пароль, то скрываем форму и продолжаем работать с книгой.

Код для кнопки "Отмена"

Private Sub CommandButton2_Click()
   ThisWorkbook.Close False
End Sub

ThisWorkbook - ключевое слово. Дословно "Эта рабочая книга" или "Текущая рабочая книга"
Close - команда на закрытие нашей книги. Параметр False указывает на закрытие книги без сохранения.
Параметр false является необязательным. Если этот параметр не указать, то в случае внесения изменений в книгу отобразится диалог:

Все. Форму запрограммировали. Осталось ее автоматически запустить. Для этого перейдем в открытый ранее редактор объекта "ЭтаКнига" и добавим туда следующую процедуру:

Private Sub Workbook_Open()
  UserForm1.Show
End Sub

Workbook_Open – событие, происходящее при открытии рабочей книги. Собственно  в этой процедуре и открывается наша форма (UserForm1.Show), происходит запуск макроса, или выполняется любой другой код. Процедура Workbook_Open сработает только в объекте "ЭтаКнига".
Сохраните книгу, закройте и попробуйте ее открыть.

Как выполнить макрос при закрытии книги Excel?

Событие, вызываемое при закрытии книги, так же как и открытие, относится к объекту "ЭтаКнига" (workbook). Открываем редактор кода этого объекта. Теперь выберите в выпадающем списке объект "Workbook" затем в списке доступных событий выберите BeforeClose - событие, вызываемое перед закрытием книги:

Событий объекта книги полно: событие при создании листа, событие при активации книги и т.д.
Итак, после выбора BeforeClose будет создана процедура:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

End Sub

Добавьте в эту процедуру например, строчку вызова сообщения:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
   MsgBox "Ой! Меня закрывают!"
End Sub

Событие BeforeClose имеет параметр Cancel логического типа, который по умолчанию имеет значение False. Если в этот параметр передать значение True, то книгу невозможно будет закрыть:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  MsgBox "Меня закрыть невозможно!"
  Cancel = True
End Sub

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

Прикрепленный файл: Autostart_VBA.zip

 

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

Примечание:  Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке) .

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

Прежде чем начать, убедитесь, что на ленте доступна вкладка Разработчик. Если ее нет, выполните указанные ниже действия.

  1. Откройте вкладку Файл и выберите пункт Параметры, а затем — категорию Настроить ленту.

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

  3. Нажмите кнопку ОК.

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

  1. Откройте вкладку Разработчик и нажмите кнопку Запись макроса.

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

  2. В списке Сохранить в выберите пункт Личная книга макросов.

  3. После этого макрос будет доступен при каждом открытии Excel.

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

  5. Нажмите кнопку ОК.

  6. Откройте вкладку Файл, выберите пункт Открыть и выберите файлы, с которыми работаете каждый день. Они могут находиться в разных местах. Чтобы выбрать несколько файлов в одной папке, щелкните каждый из них, удерживая нажатой клавишу SHIFT.

  7. Откройте вкладку Разработчик и нажмите кнопку Остановить запись.

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

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

О том, как выполнить макрос в «Excel». Запуск макроса.

 

Данная статья о том, как выполнить ранее записанный макрос в программе «Excel».
Ранее уже рассказывалось, как создавать простые макросы (выполнять их запись) в «Excel» .

Теперь наступило время рассказать, как активировать выполнение уже записанного макроса (произвести запуск макроса) в файле «Excel».

Подготовка к запуску макроса.

Для начала нужно включить вкладку разработчика на панели быстрого доступа. По умолчанию она отключены (скрыта), но именно из нее и происходит управление макросами.

Включение панели разработчика выполняется следующим образом:

Запуск макроса.

• Войти на вкладку «Разработчик» панели инструментов. Панель разработчика

• Кликнуть по пиктограмме «Макросы».
• Выбрать нужный макрос, выделив его название левой кнопкой мыши.

Выполнение записанного макроса

• Нажать кнопку «Выполнить».

Что делать, если макрос не запускается.

Одной из причин отсутствия результата при запуске готового макроса является встроенная защита «Excel», которая определяет макросы, как потенциально опасные компоненты и блокирует (отключает) их.

Рассмотрим, как снять блокировку выполнения макроса в «Excel».

Необходимо:
• Войти в меню «Файл».
• Далее «Параметры».
• В открывшемся окне выбрать вкладку «Центр управления безопасностью».
• Кликнуть по кнопке «Параметры центра управления безопасностью»

Центр управления безопасностью

• Выбрать вкладку «Параметры макросов»

Включить все макросы

• Установить флажок напротив пункта «Включить все макросы…» и нажать «ОК».

Теперь после запуска макросы будут выполняться без проблем.

 

Как записать макрос в Excel? Пошаговая инструкция

Для начала немного о терминологии. 

Макрос - это код, написанный на встроенном в Excel языке VBA (Visual Basic for Application). Макросы могут создаваться как вручную, так и записываться автоматически с помощью так называемого макрорекодера.

Макрорекодер - это инструмент в Excel, который пошагово записывает все что вы выполняете в Excel и преобразует это в код на языке VBA. Макрорекодер создает очень подробный код (как мы увидим позже), который вы сможете при необходимости отредактировать в дальнейшем.

Записанный макрос можно будет запускать неограниченное количество раз и Excel повторит все записанные шаги. Это означает, что даже если вы ничего не знаете о VBA, вы можете автоматизировать некоторые задачи, просто записав свои шаги и затем повторно использовать их позже.

Теперь давайте погрузимся и посмотрим, как записать макрос в Excel.

Отображение вкладки "Разработчик" в ленте меню

Перед тем как записывать макрос, нужно добавить на ленту меню Excel вкладку "Разработчик". Для этого выполните следующие шаги:

  1. Щелкните правой кнопкой мыши по любой из существующих вкладок на ленте и нажмите «Настроить ленту». Он откроет диалоговое окно «Параметры Excel».
  2. В диалоговом окне «Параметры Excel» у вас будут параметры «Настроить ленту». Справа на панели «Основные вкладки» установите флажок «Разработчик».
  3. Нажмите «ОК».

В результате на ленте меню появится вкладка "Разработчик"

Запись макроса в Excel

Теперь давайте запишем очень простой макрос, который выбирает ячейку и вводит в нее текст, например "Excel".

Вот шаги для записи такого макроса:

  1. Перейдите на вкладку "Разработчик".
  2. В группе "Код" нажмите кнопку "Запись макроса". Откроется одноименное диалоговое окно.
  3. В диалоговом окне "Запись макроса" введите имя для своего макроса, например "ВводТекста". Есть несколько условий именования, которые необходимо соблюдать при назначении макроса. Например, вы не можете использовать пробелы между ними. Обычно я предпочитаю сохранять имена макросов как одно слово, с разными частями с заглавным первым алфавитом. Вы также можете использовать подчеркивание для разделения двух слов - например, "Ввод_текста".
  4. Если вы хотите, то можете задать сочетание клавиш. В этом случае мы будем использовать ярлык Ctrl + Shift + N. Помните, что сочетание, которое вы указываете, будет отменять любые существующие горячие клавиши в вашей книге. Например, если вы назначили сочетание Ctrl + S, вы не сможете использовать это для сохранения рабочей книги (вместо этого, каждый раз, когда вы его используете, он выполняет макрос).
  5. В поле "Сохранить в" убедитесь, что выбрана опция "Эта книга". Этот шаг гарантирует, что макрос является частью рабочей книги. Он будет там, когда вы сохраните его и снова откроете, или даже если вы поделитесь файлом с кем-то.
  6. Введите описание при необходимости. Обычно я этого не делаю, но если у вас много макросов, лучше указать, чтобы в будущем не забыть что делает макрос.
  7. Нажмите "ОК". Как только вы нажмете OK, Excel начнет записывать ваши действия. Вы можете увидеть кнопку "Остановить запись" на вкладке "Разработчик", которая указывает, что выполняется запить макроса.
  8. Выберите ячейку A2.
  9. Введите текст "Excel" (или вы можете использовать свое имя).
  10. Нажмите клавишу Enter. Вы попадете на ячейку A3.
  11. Нажмите кнопку "Остановить запись" на вкладке "Разработчик".

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

Теперь давайте рассмотрим код который записал макрорекодер. Выполните следующие действия, чтобы открыть редактор кода:

  1. Удалите текст в ячейке A2. Это нужно, чтобы проверить будет ли макрос вставлять текст в ячейку A2 или нет.
  2. Выберите любую ячейку - кроме A2. Это нужно проверить, выбирает ли макрос ячейку A2 или нет.
  3. Перейдите на вкладку "Разработчик".
  4. В группе "Код" нажмите кнопку "Макросы".
  5. В диалоговом окне "Макрос" щелкните макрос "ВводТекста".
  6. Нажмите кнопку "Выполнить".

Вы увидите, что как только вы нажмете кнопку "Выполнить", текст "Excel" будет вставлен в ячейку A2 и выбрана ячейка A3. Это происходит за миллисекунды. Но на самом деле макрос последовательно выполнил записанные действия.

Примечание. Вы также можете запустить макрос с помощью сочетания клавиш Ctrl + Shift + N (удерживайте клавиши Ctrl и Shift, а затем нажмите клавишу N). Это тот же самый ярлык, который мы назначили макросу при его записи.

Что записывает макрос?

Теперь перейдем к редактору кода и посмотрим что у нас получилось.

Вот шаги по открытию редактора VB в Excel:

  1. Перейдите на вкладку "Разработчик".
  2. В группе "Код" нажмите кнопку "Visual Basic".
     

Вы также можете использовать комбинацию клавиш Alt + F11 и перейти в редактор кода VBA.

Рассмотрим сам редактор кода. Далее коротко опишем интерфейс редактора.

  • Панель меню: содержит команды, которые можно использовать во время работы с редактором VB.
  • Панель инструментов - похожа на панель быстрого доступа в Excel. Вы можете добавить к ней дополнительные инструменты, которыми часто пользуетесь.
  • Окно проектов (Project Explorer) - здесь Excel перечисляет все книги и все объекты в каждой книге. Например, если у нас есть книга с 3 рабочими листами, она появится в Project Explorer. Здесь есть несколько дополнительных объектов, таких как модули, пользовательские формы и модули классов.
  • Окно кода - собственно сам код VBA размещается в этом окне. Для каждого объекта, указанного в проводнике проекта, есть окно кода, например, рабочие листы, книги, модули и т. д. В этом уроке мы увидим, что записанный макрос находится в окне кода модуля.
  • Окно свойств - вы можете увидеть свойства каждого объекта в этом окне. Я часто использую это окно для обозначения объектов или изменения их свойств. 
  • Immediate Window (окно предпросмотра) - На начальном этапе оно вам не пригодится. Оно полезно, когда вы хотите протестировать шаги или во время отладки. Он по умолчанию не отображается, и вы можете его отобразить, щелкнув вкладку «View» и выбрав опцию «Immediate Window».

Когда мы записали макрос "ВводТекста", в редакторе VB произошли следующие вещи:

  • Был добавлен новый модуль.
  • Макрос был записан с именем, которое мы указали - "ВводТекста"
  • В окне кода добавлена новая процедура.

Поэтому, если вы дважды щелкните по модулю (в нашем случае модуль 1), появится окно кода, как показано ниже.

 

Вот код, который записан макрорекодером:


 Sub ВводТекста()
 '
 ' ВводТекста Макрос
 '
 
 '
     Range("A2").Select
     ActiveCell.FormulaR1C1 = "Excel"
     Range("A3").Select
 End Sub
 

В VBA, любая строка , которая следует за ' (знак апострофа) не выполняется. Это комментарий, который предназначен только для информационных целей. Если вы удалите первые пять строк этого кода, макрос по-прежнему будет работать.

Теперь давайте пробежим по каждой строке кода и опишем что и зачем. 

Код начинается с Sub, за которым следует имя макроса и пустые круглые скобки. Sub - сокращение для подпрограммы. Каждая подпрограмма (также называемая процедурой) в VBA начинается с Sub и заканчивается End Sub.

  • Range("A2").Select - эта строка выбирает ячейку A2.
  • ActiveCell.FormulaR1C1 = «Excel» - эта строка вводит текст "Excel" в активной ячейке. Поскольку мы выбрали ячейку A2 в качестве первого шага, она становится нашей активной ячейкой.
  • Range("A3").Select - выбор ячейки A3. Это происходит, когда мы нажимаем клавишу Enter после ввода текста, результатом которого является выбор ячейки A3.

Надеюсь, что у вас есть некоторое базовое понимание того, как записывать макрос в Excel.

Обращаем внимание, что код, записанный через макрорекордер, как правило, не является эффективным и оптимизированным кодом. Макрорекордер часто добавляет дополнительные ненужные действия. Но это не значит, что не нужно пользоваться макрорекодером. Для тех, кто только изучает VBA , макрорекордер может быть отличным способом проанализировать и понять как все работает в VBA.

Абсолютная и относительная запись макроса

Вы уже знаете про абсолютные и относительные ссылки в Excel? Если вы используете абсолютную ссылку для записи макроса, код VBA всегда будет ссылаться на те же ячейки, которые вы использовали. Например, если вы выберете ячейку A2 и введете текст "Excel", то каждый раз - независимо от того, где вы находитесь на листе и независимо от того, какая ячейка выбрана, ваш код будет вводить текст "Excel" в ячейку A2.

Если вы используете параметр относительной ссылки для записи макроса, VBA не будет привязываться к конкретному адресу ячейки. В этом случае программа будет "двигаться" относительно активной ячейки. Например, предположим, что вы уже выбрали ячейку A1, и вы начинаете запись макроса в режиме относительной ссылки. Теперь вы выбираете ячейку A2, вводите текст Excel и нажмите клавишу Enter. Теперь, если вы запустите этот макрос, он не вернется в ячейку A2, вместо этого он будет перемещаться относительно активной ячейки. Например, если выбрана ячейка B3, она переместится на B4, запишет текст "Excel" и затем перейдет к ячейке K5.

Теперь давайте запишем макрос в режиме относительных ссылок:

  1. Выберите ячейку A1.
  2. Перейдите на вкладку "Разработчик".
  3. В группе "Код" нажмите кнопку "Относительные ссылки". Он будет подсвечиваться, указывая, что он включен.
  4. Нажмите кнопку "Запись макроса".
  5. В диалоговом окне "Запись макроса" введите имя для своего макроса. Например,  имя "ОтносительныеСсылки".
  6. В опции "Сохранить в" выберите "Эта книга".
  7. Нажмите "ОК".
  8. Выберите ячейку A2.
  9. Введите текст "Excel" (или другой как вам нравится).
  10. Нажмите клавишу Enter. Курсор переместиться в ячейку A3.
  11. Нажмите кнопку "Остановить запись" на вкладке "Разработчик".

Макрос в режиме относительных ссылок будет сохранен.

Теперь сделайте следующее.

  1. Выберите любую ячейку (кроме A1).
  2. Перейдите на вкладку "Разработчик".
  3. В группе "Код" нажмите кнопку "Макросы".
  4. В диалоговом окне "Макрос" кликните на сохраненный макрос "ОтносительныеСсылки".
  5. Нажмите кнопку "Выполнить".

Как вы заметите, макрос записал текст "Excel" не в ячейки A2. Это произошло, потому что вы записали макрос в режиме относительной ссылки. Таким образом, курсор перемещается относительно активной ячейки. Например, если вы сделаете это, когда выбрана ячейка B3, она войдет в текст Excel - ячейка B4 и в конечном итоге выберет ячейку B5.

Вот код, который записал макрорекодер:


 Sub ОтносительныеСсылки()
 '
 ' ОтносительныеСсылки Макрос
 '
 
 '
     ActiveCell.Offset(1, 0).Range("A1").Select
     ActiveCell.FormulaR1C1 = "Excel"
     ActiveCell.Offset(1, 0).Range("A1").Select
 End Sub
 

Обратите внимание, что в коде нет ссылок на ячейки B3 или B4. Макрос использует Activecell для ссылки на текущую ячейку и смещение относительно этой ячейки.

Не обращайте внимание на часть кода Range(«A1»). Это один из тех случаев, когда макрорекодер добавляет ненужный код, который не имеет никакой цели и может быть удален. Без него код будет работать отлично.

Что нельзя сделать с помощью макрорекодера?

Макро-рекордер отлично подходит для вас в Excel и записывает ваши точные шаги, но может вам не подойти, когда вам нужно сделать что-то большее.

  • Вы не можете выполнить код без выбора объекта. Например, если вы хотите, чтобы макрос перешел на следующий рабочий лист и выделил все заполненные ячейки в столбце A, не выходя из текущей рабочей таблицы, макрорекодер не сможет этого сделать. В таких случаях вам нужно вручную редактировать код.
  • Вы не можете создать пользовательскую функцию с помощью макрорекордера. С помощью VBA вы можете создавать пользовательские функции, которые можно использовать на рабочем листе в качестве обычных функций.
  • Вы не можете создавать циклы с помощью макрорекордера. Но можете записать одно действие, а цикл добавить вручную в редакторе кода. 
  • Вы не можете анализировать условия: вы можете проверить условия в коде с помощью макрорекордера. Если вы пишете код VBA вручную, вы можете использовать операторы IF Then Else для анализа условия и запуска кода, если true (или другой код, если false).

Расширение файлов Excel, которые содержат макросы

Когда вы записываете макрос или вручную записываете код VBA в Excel, вам необходимо сохранить файл с расширением файла с поддержкой макросов (.xlsm).

До Excel 2007 был достаточен один формат файла - .xls. Но с 2007 года .xlsx был представлен как стандартное расширение файла. Файлы, сохраненные как .xlsx, не могут содержать в себе макрос. Поэтому, если у вас есть файл с расширением .xlsx, и вы записываете / записываете макрос и сохраняете его, он будет предупреждать вас о сохранении его в формате с поддержкой макросов и покажет вам следующее диалоговое окно:

Если вы выберете "Нет", Excel сохранить файл в формате с поддержкой макросов. Но если вы нажмете "Да", Excel автоматически удалит весь код из вашей книги и сохранит файл как книгу в формате .xlsx. Поэтому, если в вашей книге есть макрос, вам нужно сохранить его в формате .xlsm, чтобы сохранить этот макрос.

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

Перед началом работы убедитесь, что на ленте отображается вкладка Developer . Для получения дополнительной информации см. Показать вкладку «Разработчик».

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

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

  1. Щелкните Developer > Visual Basic .

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

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

     Частная вспомогательная книга_Открыть () 
    'Введите сюда свой код
    Концевой переводник
  4. Вставьте записанный код в подпроцедуру между строками Sub и End Sub .

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

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

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

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

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

  2. В категории «Настроить ленту » в списке Основные вкладки установите флажок Developer .

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

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

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

  1. Щелкните Developer > Visual Basic .

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

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

     Частная вспомогательная книга_Открыть () 
    'Введите сюда свой код
    Концевой переводник
  4. Вставьте записанный код в подпроцедуру между строками Sub и End Sub .

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

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

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

.

Как запустить макрос в Excel

Посмотреть видео - Как запустить макрос в Excel

В Excel вы можете создать макрос, записав его или написав код в редакторе VB.

После создания вам необходимо запустить макрос.

В этом руководстве я покажу вам различные способы запуска макроса в Excel.

Если вы заинтересованы в изучении VBA простым способом, ознакомьтесь с моим курсом Online Excel VBA Training .

Как запустить макрос в Excel

Для целей этого руководства, допустим, у нас есть макрос с именем «ColorCell» со ​​следующим кодом:

 Sub ColorCell () Диапазон («А1»).Interior.Color = vbRed End Sub 

Этот однострочный код заполняет ячейку A1 активного листа красным цветом.

Теперь давайте посмотрим, как запустить этот макрос в Excel.

Запуск макроса, щелкнув фигуру

Один из самых простых способов запустить макрос - это иметь кнопку на рабочем листе и щелкать эту кнопку для выполнения макроса.

Это просто и интуитивно понятно.

Преимущество этого метода в том, что он делает запуск макроса действительно простым и интуитивно понятным для всех.Даже если вы поделитесь книгой с кем-то, кто не знаком с VBA, он / она может просто щелкнуть кнопку и увидеть, как выполняются действия (даже не зная, что происходит в конце).

Примерно как показано ниже:

Вот шаги, чтобы сделать это:

Вот и все! Теперь фигура будет работать как кнопка, и всякий раз, когда вы нажимаете на нее, запускается назначенный макрос.

Запуск макроса нажатием кнопки

Хотя форму можно отформатировать, кнопка имеет стандартный формат.

Вот как это выглядит:

Вы можете назначить макрос кнопке, а затем запустить макрос, просто щелкнув эту кнопку.

Вот шаги, чтобы назначить макрос кнопке:

  • Перейдите на вкладку Разработчик -> Элементы управления -> Вставить -> Элементы управления формы -> Кнопка.
    • Вкладка «Разработчик» не отображается на ленте по умолчанию, и вам может потребоваться добавить ее перед ее использованием.
  • Щелкните в любом месте листа.Как только вы это сделаете, откроется диалоговое окно «Назначить макрос».
  • Выберите макрос, который вы хотите назначить кнопке, и нажмите OK. Это вставит кнопку в рабочий лист.

Кнопка, вставленная с помощью этого метода, является стандартной, и вы не можете изменить форматирование кнопки (в отличие от фигур, где вы можете изменить практически все).

Однако вы можете изменить текст кнопки. Для этого щелкните его правой кнопкой мыши и выберите «Редактировать текст».

Примечание. Вы также можете назначить макрос другим интерактивным элементам управления, например флажку или полосе прокрутки.

Запуск макроса с ленты (вкладка «Разработчик»)

Если у вас есть несколько макросов в книге, вы можете увидеть список всех макросов в диалоговом окне «Макросы». Это позволяет легко запускать несколько макросов из одного места.

Вот шаги:

  • Перейдите на вкладку разработчика -> Код -> Макросы.
  • В диалоговом окне «Макросы» перечислены все макросы в книге.Выберите тот, который хотите запустить.
  • Нажмите «Выполнить».

Запуск макроса из редактора VB

Если вы пишете и тестируете макросы, то вместо вставки кнопок вы можете напрямую запустить макрос из редактора VB.

Вот шаги:

  • Выберите любую строку в коде в окне кода. Если у вас несколько макросов / подпрограмм, убедитесь, что ваш курсор находится в макросе, который вы хотите запустить.
  • Перейдите на панель инструментов и щелкните значок зеленого треугольника (также можно воспользоваться сочетанием клавиш - F5).

Как только вы это сделаете, макрос будет выполнен.

Если у вас открыт только редактор VB (и вы не видите рабочий лист), вы можете не увидеть изменения, происходящие на листе. Вы можете свернуть экран редактора VB, а затем запустить макрос, чтобы увидеть изменения в реальном времени.

Вам также могут понравиться следующие руководства по Excel VBA:

.

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

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

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

  1. Щелкните File > Options > Customize Ribbon .

  2. В разделе Настроить ленту , в поле Основные вкладки установите флажок Developer .

  3. Щелкните ОК .

Чтобы книги открывались автоматически при запуске Excel:

  1. Щелкните Developer > Запись макроса .

  1. В поле Macro name введите Auto_Open .

  2. В поле Сохранить макрос в поле выберите Personal Macro Workbook .

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

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

  5. Щелкните ОК .

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

  7. Щелкните Developer > Остановить запись .

  8. Когда вы закроете Excel, вам в конечном итоге будет предложено сохранить изменения, внесенные в личную книгу макросов.Щелкните Да, чтобы ваш макрос запускался при каждом запуске Excel.

    При каждом запуске Excel автоматически открываются книги, включенные в макрос.

.

vba - я хочу автоматически запускать мой макрос при открытии файла excel

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд
.

vba - как открыть ВСЕ файлы Excel один за другим и запустить макрос

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд
.

Запуск макроса при изменении определенных ячеек в Excel - Office

  • 2 минуты на чтение
  • Применимо к:
    Excel 2007, Excel 2003, Excel 2002, Excel 2000

В этой статье

Примечание

Office 365 профессиональный плюс переименовывается в Microsoft 365 Apps for enterprise .Дополнительные сведения об этом изменении см. В этом сообщении в блоге.

Сводка

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

Обратите внимание, однако, что вы не должны вызывать макросы без необходимости, потому что они замедляют производительность Excel.

Дополнительная информация

Microsoft предоставляет примеры программирования только для иллюстрации, без явных или подразумеваемых гарантий.Это включает в себя, но не ограничивается, подразумеваемые гарантии товарной пригодности или пригодности для определенной цели. В этой статье предполагается, что вы знакомы с демонстрируемым языком программирования и инструментами, которые используются для создания и отладки процедур. Инженеры службы поддержки Майкрософт могут помочь объяснить функциональность конкретной процедуры, но они не будут изменять эти примеры для предоставления дополнительных функций или построения процедур в соответствии с вашими конкретными требованиями.Во многих случаях макрос должен запускаться только тогда, когда определенное количество ячеек содержит введенные в них значения (называемые в этом документе «ключевыми ячейками»). Чтобы предотвратить запуск большого макроса каждый раз, когда значение вводится в ячейку листа, необходимо проверить, не ActiveCell - одна из ключевых ячеек. Для этого используйте метод Intersect для ActiveCell и диапазон, содержащий ключевые ячейки, чтобы убедиться, что ActiveCell является одной из ключевых ячеек. Если ActiveCell находится в диапазоне, содержащем ключевые ячейки, вы можете вызвать макрос.

Чтобы создать макрос Visual Basic:

  1. Щелкните правой кнопкой мыши вкладку Sheet1 и выберите команду Просмотреть код.

    Лист модуля за Sheet1 открыт.

  2. Введите следующий код в лист модуля:

      Private Sub Worksheet_Change (ByVal Target как диапазон) Dim KeyCells как диапазон 'Переменная KeyCells содержит ячейки, которые будут вызывают предупреждение при их изменении. Установите KeyCells = Range ("A1: C10") Если не приложение.Пересечение (KeyCells, Диапазон (Target.Address)) _ Тогда ничего 'Отображать сообщение, когда одна из обозначенных ячеек была 'изменилось. 'Разместите здесь свой код. MsgBox «Ячейка» & Target.Address & «изменилась». Конец, если Конец подписки  
  3. Щелкните Закрыть и вернуться в Microsoft Excel в меню «Файл».

При вводе записи в ячейки A1: C10 на листе Sheet1 отображается окно сообщения.

.

Смотрите также