Как запустить макрос в другом файле excel

Обновлено: 07.07.2024

Вызов подпрограммы из кода другой процедуры Sub, расположенной в том же модуле или другом модуле одной рабочей книги (проекта VBA) осуществляется с помощью ключевого слова Call или без него по имени подпрограммы. Вызывающая процедура Sub может быть любой видимости, как Public, так и Private, а вызываемая, если расположена в том же модуле, может быть любой видимости, но если расположена в другом модуле, должна быть объявлена как Public.

Синтаксис вызова подпрограмм в пределах одной книги

[ Call ] ИмяПроцедуры [ (Аргументы) ]

  • Call — необязательное ключевое слово;
  • ИмяПроцедуры — обязательный компонент, имя вызываемой подпрограммы;
  • Аргументы — необязательный компонент, список аргументов вызываемой процедуры Sub, разделенных запятой.

Вызов подпрограмм без аргументов в пределах одного модуля

Скобки рядом с именами вызываемых подпрограмм без аргументов не ставятся:

MsgBox "Процедура test2 (Private) вызвана с ключевым словом Call!" MsgBox "Процедура test3 (Public) вызвана без ключевого слова Call!"

Вы можете скопировать приведенный код в свой модуль и посмотреть, запустив процедуру test1, как она последовательно запускает процедуры test2 и test3.

Вызов подпрограмм с аргументами в пределах одного модуля

При вызове процедур Sub с аргументами и ключевым словом Call, аргументы заключаются в скобки, без ключевого слова Call — аргументы не заключаются в скобки:

Вы можете разместить этот код в своем модуле и протестировать его.

Вызов подпрограмм из разных модулей одной книги

Правила, касающиеся использования оператора Call и заключения аргументов в скобки, верны и для вызова процедур Sub, находящихся в разных модулях. Единственным отличием является необходимость вместе с именем вызываемой подпрограммы указывать место ее расположения. Место расположения и имя подпрограммы разделяются точкой.

Вызываемая подпрограмма расположена в Стандартном модуле

  • ИмяМодуля — уникальное имя стандартного модуля, отображаемое в проводнике проекта VBA.

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

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

  • ЭтаКнига — так и пишется, указывает на текущую книгу в которой расположены вызывающая и вызываемая подпрограммы.
  • ИмяЛиста — уникальное имя листа, которое в проводнике проекта VBA указано без скобок (по умолчанию: Лист1, Лист2, Лист3 и т.д.).
  • Имя ярлычка листа — дублирующее имя листа, которое в проводнике проекта VBA указано в скобках.
  • ИмяФормы — уникальное имя пользовательской формы, отображаемое в проводнике проекта VBA.

Вызов процедур Sub из модулей разных книг

  1. ИмяКниги!ИмяМодуля.ИмяПроцедуры — обязательный компонент, полный адрес подпрограммы, заключен в двойные кавычки.
    • ИмяКниги — имя рабочей книги Excel с расширением, в которой находится вызываемая подпрограмма, если имя содержит пробелы, оно заключается в одинарные кавычки — апострофы (‘Имя Книги’).
    • ИмяМодуля — имя модуля для стандартного модуля (для уникальных имен вызываемых подпрограмм может не указываться), имя листа для модуля листа, словосочетание «ЭтаКнига» (без кавычек) для модуля книги.
    • ИмяПроцедуры — имя вызываемой процедуры Sub.
  2. Арг1, Арг2, …, Арг30 — необязательные компоненты, аргументы вызываемой подпрограммы, максимальное количество которых ограничено 30 элементами.

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

Полный адрес вызываемой процедуры

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

Список макросов во всех открытых книгах Excel

Список макросов во всех открытых книгах

2. Найдите в списке вызываемую подпрограмму и кликните по ней. Ее полный адрес отобразится в поле «Имя макроса».

Один нюанс: в окне «Макрос» не отображаются процедуры с аргументами. Чтобы отобразить такую процедуру, закомментируйте аргументы, а после копирования и вставки раскомментируйте их.

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

Пример вызова подпрограмм из другой книги

Допустим, у нас есть рабочая книга Excel под именем «Книга1.xlsm» (или «Книга1.xls» в ранних версиях программы). В ней находятся вызываемые из другой книги процедуры Sub, перечисленные ниже.

В стандартном модуле «Module1»:

В модуле листа «Лист1»:

В модуле книги «ЭтаКнига»:

Для последовательного запуска этих подпрограмм можно вставить в любой модуль другой книги Excel следующую процедуру:

Application . Run "Книга1.xlsm!ЭтаКнига.Vyzov3" , 555 , 445

Во второй строке кода пропущено имя стандартного модуля, так как имя подпрограммы оказалось уникальным, а в следующей строке этот же код продублирован, для примера, с именем модуля. В пятой строке — пример запуска процедуры Sub с двумя аргументами.

И еще раз напомню, что имя книги с пробелами заключается в одинарные кавычки (апострофы):

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

Заключение

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

Если хотите поэкспериментировать со связанными книгами, откройте проект VBA, из которого надо установить связь с другой книгой, и выберите в главном меню «Tools» — «References…». В открывшемся окне «References — VBAProject» все открытые книги будут отображены одним словом — «VBAProject». Выделяйте по очереди строки с этим словом и внизу, в информационной рамке, смотрите, какой книге этот проект принадлежит. Поставьте галочку рядом с выбранным проектом и нажмите кнопку «OK». Если книга, с проектом которой устанавливается связь, закрыта, ее не будет в списке. В этом случае, нажмите на кнопку «Browse…», найдите, выбрав расширение, нужную книгу и откройте ее в проводнике. Связь будет установлена, и процедуры из связанных книг будут вызываться по имени с ключевым словом Call или без него, как будто они расположены в одной книге.

Замучил вопрос, возможно дурацкий.
Есть два файла Excel: Книга1 и Книга2. В книге2 есть макрос2.
Задача: написать в Книге1 макрос, который:
1. Открывает книгу2
2. Запускает в ней Макрос2
3. Закрывает книгу2

На втором шаге затык: не знаю как по-человечески вызвать из Макроса Книги1 макрос, хранящийся в Книге2. Пока решил проблему, повесив Макрос2 на определенное событие книги2 (Worksheet_Change), но есть чувство, что это лечение зубов через задний проход.

У меня следующий вопрос - как прописать, чтобы:
1. Макрос выполнялся автоматически при открытии Книга1
2. Чтобы оно не открывало окно для выбора bin-файла, а атоматически открывало файл test.bin.

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

Для этого нужно перенести нужный макрос со всеми зависимостями(самописные функции и прозедуры вызываемые из нужного
макроса) в файл "Книга1.xls" и поставить вызов нужного макрова в обработчик события Workbook_Open() в модуле книги.

> 2. Чтобы оно не открывало окно для выбора bin-файла, а атоматически открывало файл test.bin.

Для этого нужно прописать полный путь к файлу test.bin, и тогда можно выбросить первую строку

Posted via ActualForum NNTP Server 1.4

Для этого нужно перенести нужный макрос со всеми зависимостями(самописные функции и прозедуры вызываемые из нужного
макроса) в файл "Книга1.xls" и поставить вызов нужного макрова в обработчик события Workbook_Open() в модуле книги.

> 2. Чтобы оно не открывало окно для выбора bin-файла, а атоматически открывало файл test.bin.

Для этого нужно прописать полный путь к файлу test.bin, и тогда можно выбросить первую строку

эээ. простите, а можно пожалуйста как-то по подробней. Я первый раз работаю с макросами, да и Экселем я тоже не часто пользуюсь. Что и куда прописывать и переносить? что такое модуль книги и обработчик событий? как его открыть?

Для этого нужно перенести нужный макрос со всеми зависимостями(самописные функции и прозедуры вызываемые из нужного
макроса) в файл "Книга1.xls" и поставить вызов нужного макрова в обработчик события Workbook_Open() в модуле книги.

> 2. Чтобы оно не открывало окно для выбора bin-файла, а атоматически открывало файл test.bin.

Для этого нужно прописать полный путь к файлу test.bin, и тогда можно выбросить первую строку

Это хорошо, а то нет времени расписывать :)

> А вот второй пока не догоняю, куда этот путь прописывать - просто вместо строки
> iFile = Application.GetOpenFilename("Binare Dateien, *.bin", , "Datei offnen")
Эта строка кода всего лишь показывает диалог выбора файла и по выбору файла передает в переменную iFile путь к
выбранному файлу. Для того что-бы не показывать этот диалог, нужно просто прописать путь к файлу. Например iFile =
"c:\folder_for_binary\test.bin" .Но это обязывает положить файл test.bin d папку folder_for_binary расположенную на
диске С. И если файла не будет, произойдет ошибка.

Поэтому я сделал бы так, вместо первой строки, вторая, похоже нужна для правильной работы макроса:

Posted via ActualForum NNTP Server 1.4

Это хорошо, а то нет времени расписывать :)

> А вот второй пока не догоняю, куда этот путь прописывать - просто вместо строки
> iFile = Application.GetOpenFilename("Binare Dateien, *.bin", , "Datei offnen")
Эта строка кода всего лишь показывает диалог выбора файла и по выбору файла передает в переменную iFile путь к
выбранному файлу. Для того что-бы не показывать этот диалог, нужно просто прописать путь к файлу. Например iFile =
"c:\folder_for_binary\test.bin" .Но это обязывает положить файл test.bin d папку folder_for_binary расположенную на
диске С. И если файла не будет, произойдет ошибка.

Поэтому я сделал бы так, вместо первой строки, вторая, похоже нужна для правильной работы макроса:

Без самого макроса и этого bin-файла уже ничего не подскажу. Замена первой строки на мой код никак не могда изменить
что-то в работе макроса, поэтому мне кажется ты что-то "зацепил" случаянно и не заметил, поэтому и не работает.
Выкладывай и оригинальный макрос и переделанный, посмотрю.

Posted via ActualForum NNTP Server 1.4

Без самого макроса и этого bin-файла уже ничего не подскажу. Замена первой строки на мой код никак не могда изменить
что-то в работе макроса, поэтому мне кажется ты что-то "зацепил" случаянно и не заметил, поэтому и не работает.
Выкладывай и оригинальный макрос и переделанный, посмотрю.

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

Вот так выглядит мой вариант рабочего макроса. Больше я ничего не менял. Файл test2.bin лежит c:\1_0\test2.bin. Все
работает, создается новый лист, называется именем bin-файла и первые три столбца заполняется цифрами до 89 строки, потом
до 101 строки идут нули

Posted via ActualForum NNTP Server 1.4

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

Вообще вызов такой:

То работает нормально если книга с функцией открыта в экземпляре с вызывающим кодом. Иначе, валится с ошибкой. Если указать полный путь, то книга аттачится к Excel'ю но функция опять валится с ошибкой, но стоит убрать и вызвать книгу только по имени - то всё ОК.
Вывод: Надо проверить открыта ли сейчас книга с функциями, если нет, то открыть и уже потом сделать вызов.

Также можно (если например книга с функциями всегда будет не подалёку) сделать ссылку на книгу через окно Tools -> References. Тогда книга автоматически будет открываться, так как она зависимой от другой книги стала. И вызвать можно будет как по полному пути, например так:

Если книга содержит макрос Visual Basic для приложений(VBA),который вы хотите использовать в другом месте, вы можете скопировать модуль, содержащий этот макрос, в другую открытую книгу с помощью редактора Visual Basic(VBE).

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

Чтобы Windows, перейдите в меню Параметры > >Настроить ленту.

Для Macперейдите на Excel > параметры. >ленты & панели инструментов.

Затем в разделе Настройка ленты в разделе Основные вкладкиубедитесь в том, что в разделе Разработчик.

Общие сведения о макросах и VBA

Если вы не знакомы с макросами и VBA в целом, вам могут пригодиться следующие сведения:

Макрос — это действие или набор действий, которые можно использовать для автоматизации задач.

Макрос можно записать с помощью команды Запись макроса на вкладке Разработчик.

Макрос записуется на языке программирования VBA.

Вы можете проверить и изменить макрос в редакторе Visual Basic, которое открывается Excel. Вот пример окна VBE для Windows:

Модуль, содержащий два макроса, которые хранятся в Модуле1 в Книге1

Макрос с именами MakeCellGreen и SetRowHeight находится в модуле Module1,который хранится в книге Book1.

Копирование модуля из одной книги в другую

Откройте книгу, содержаную макрос, который вы хотите скопировать, и книгу, в которую вы хотите его скопировать.

На вкладке Разработчик щелкните Visual Basic, чтобы открыть редактор Visual Basic редактора.

В редакторе Visual Basic меню Вид выберите Project проводник или нажмите CTRL+R .

В области Project проводника перетащите модуль, содержащий макрос, который нужно скопировать в 9-ю книгу. В этом случае мы копируете Module1 из Book2.xlsm в Book1.xlsm.

Окно проекта VBA

Модуль1, скопирован из Book2.xlsm

Копия модуля1, скопированная в Book1.xlsm

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

[/vba]
Сработало видимо потому что файл книга2 уже открыт.

Но теперь другая проблема. Этот макрос2 не отрабатывает как надо. Хотя если нажимать кнопку на котором висит этот макрос то файл обрабатывается с теми новыми данными из файла книга1.

Расширение файла книга2 XLS это старый файл экселя с макросами.

[/vba]
Сработало видимо потому что файл книга2 уже открыт.

Но теперь другая проблема. Этот макрос2 не отрабатывает как надо. Хотя если нажимать кнопку на котором висит этот макрос то файл обрабатывается с теми новыми данными из файла книга1.

Расширение файла книга2 XLS это старый файл экселя с макросами. fairylive

[/vba]
Сработало видимо потому что файл книга2 уже открыт.

Но теперь другая проблема. Этот макрос2 не отрабатывает как надо. Хотя если нажимать кнопку на котором висит этот макрос то файл обрабатывается с теми новыми данными из файла книга1.

Расширение файла книга2 XLS это старый файл экселя с макросами. Автор - fairylive
Дата добавления - 13.07.2016 в 17:34


Неправильно сдвинулись. Макросов "макрос2" может быть много - в разных книгах и даже в разных модулях одной книги. Нужно указывать книгу и модуль.
Кстати, у Вас в текущей книге случайно нет ли макроса с именем "макрос2"?
И еще - гнетут меня смутные сомнения, что в том макросе "макрос2", который нужен, на прописана книга, в которой тот должен работать (типа имя книги, ThisWorkbook или ActiveWorkbook). Возможно, лист тоже не прописан. Тогда макрос будет отрабатывать на текущем листе текущей книги, а не там, где Вам нужно
Неправильно сдвинулись. Макросов "макрос2" может быть много - в разных книгах и даже в разных модулях одной книги. Нужно указывать книгу и модуль.
Кстати, у Вас в текущей книге случайно нет ли макроса с именем "макрос2"?
И еще - гнетут меня смутные сомнения, что в том макросе "макрос2", который нужен, на прописана книга, в которой тот должен работать (типа имя книги, ThisWorkbook или ActiveWorkbook). Возможно, лист тоже не прописан. Тогда макрос будет отрабатывать на текущем листе текущей книги, а не там, где Вам нужно _Boroda_
Неправильно сдвинулись. Макросов "макрос2" может быть много - в разных книгах и даже в разных модулях одной книги. Нужно указывать книгу и модуль.
Кстати, у Вас в текущей книге случайно нет ли макроса с именем "макрос2"?
И еще - гнетут меня смутные сомнения, что в том макросе "макрос2", который нужен, на прописана книга, в которой тот должен работать (типа имя книги, ThisWorkbook или ActiveWorkbook). Возможно, лист тоже не прописан. Тогда макрос будет отрабатывать на текущем листе текущей книги, а не там, где Вам нужно Автор - _Boroda_
Дата добавления - 13.07.2016 в 17:55

Макрос2 имеет уникальное имя. Повториться не может. Это я его здесь на форуме так обозвал для наглядности. Вообще он в той книге Книга2 имеет имя на русском языке. Может дело в этом?

По поводу активации и thisbook. Вот так это выглядит в моём макросе Макрос1(имя тоже другое уникальное)

UPD. Подправил Книга1 на Книга2.

Макрос2 имеет уникальное имя. Повториться не может. Это я его здесь на форуме так обозвал для наглядности. Вообще он в той книге Книга2 имеет имя на русском языке. Может дело в этом?

По поводу активации и thisbook. Вот так это выглядит в моём макросе Макрос1(имя тоже другое уникальное)

UPD. Подправил Книга1 на Книга2. fairylive

По поводу активации и thisbook. Вот так это выглядит в моём макросе Макрос1(имя тоже другое уникальное)

UPD. Подправил Книга1 на Книга2. Автор - fairylive
Дата добавления - 13.07.2016 в 18:29

Причем здесь Ваш макрос1? Я про Макрос 2 Вам говорю
И вообще - давайте не будем без кода макроса в угадайку играть? Причем здесь Ваш макрос1? Я про Макрос 2 Вам говорю
И вообще - давайте не будем без кода макроса в угадайку играть? _Boroda_
И вообще - давайте не будем без кода макроса в угадайку играть? Автор - _Boroda_
Дата добавления - 13.07.2016 в 19:41 И вообще - давайте не будем без кода макроса в угадайку играть? И вообще - давайте не будем без кода макроса в угадайку играть? И вообще - давайте не будем без кода макроса в угадайку играть?
Незачем было и начинать. Автор - RAN
Дата добавления - 13.07.2016 в 20:16

Тот файл Книга2 написан не мой. Кода там несколько сотен страниц. Вникать как там что устроено нет ни возможности ни желания. Думаю что ни вам ни мне. Но он работает и это главное. Единственное что написан он очень давно. Когда ещё не было расширений XLSM. Сохранён он в формате XLS. И только в таком виде он может существовать. При попытке сохранить в другом формате (xlsm) макрос перестаёт работать.

Мне надо просто открывать этот файл, запихивать туда данные и запускать макрос на обработку этих данных. С первыми двумя пунктами проблем нет. А вот макрос почему-то не подцепляется.

Коды пока выложить не могу. Мой который я пишу ещё очень сыроват.

Тот файл Книга2 написан не мой. Кода там несколько сотен страниц. Вникать как там что устроено нет ни возможности ни желания. Думаю что ни вам ни мне. Но он работает и это главное. Единственное что написан он очень давно. Когда ещё не было расширений XLSM. Сохранён он в формате XLS. И только в таком виде он может существовать. При попытке сохранить в другом формате (xlsm) макрос перестаёт работать.

Мне надо просто открывать этот файл, запихивать туда данные и запускать макрос на обработку этих данных. С первыми двумя пунктами проблем нет. А вот макрос почему-то не подцепляется.

Коды пока выложить не могу. Мой который я пишу ещё очень сыроват. fairylive

Мне надо просто открывать этот файл, запихивать туда данные и запускать макрос на обработку этих данных. С первыми двумя пунктами проблем нет. А вот макрос почему-то не подцепляется.

Коды пока выложить не могу. Мой который я пишу ещё очень сыроват. Автор - fairylive
Дата добавления - 13.07.2016 в 21:02

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

SHIFT.

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

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

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

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

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

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

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

Изменить.

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

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

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

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

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

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

Читайте также: