Группы и рассылки:

Вы здесь

Вызов процедур VBA из других рабочих книг Excel

Версия для печати

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

Как вызвать процедуру из другой книги Excel?

В арсенале VBA Excel есть два способа вызвать процедуру из другой книги:

  1. Установить связь с книгой и работать как с обычным модулем;
  2. Воспользоваться методом Run с явным указанием пути к книге.

Рассмотрим первый способ. Создадим две книги: library.xls и Exec_Book.xls.
В книге library.xls создадим модуль с процедурой "Сообщение":

Sub Сообщение()
  msgbox "Процедура запущена!"
End Sub

Так же, зададим имя нашего VBA проекта, для этого в окне Project Explorer (ctrl+R), щелкните по названию проекта в нашей книге Library (VBAProject(Library.xls) и в окне свойств (Properties Window (F4)) замените Name на свое имя. Я назвал как "My_Library":

Сохраняем, закрываем книгу.

Теперь переходим к книге Exec_Book.xls. Открываем VBE редактор (alt+F11).

Для того чтоб процедуры и функции другой книги стали доступны, в книге которая будет вызывать процедуры (в нашем случае Exec_Book.xls) необходимо создать ссылку на книгу с процедурами (Library.xls). Ссылка устанавливается следующим образом: Tools - References

В открывшемся окне щелкните по кнопке Browse и укажите наш файл Library.xls. Не забудьте изменить фильтр "Тип файла" на "Microsoft Office ...."

В окне References появится новая связь "My_Library"

Жмем ОК. Все. Теперь мы можем вызвать нашу процедуру любым способом, описанным в этой статье.

Например:
Sub Test()
  Сообщение
  My_Library.Module1.Сообщение
  Call Сообщение
End Sub

Обратите внимание. Что при открытии книги Exec_Book.xls, Library.xls автоматически открывается.

Вызов процедур с помощью метода Run работает только при открытой рабочей книге содержащей процедуры(в нашем случае Library.xls). Вызов происходит следующим образом:

Sub TestRun ()
    Application.Run "'Library.xls'!Сообщение"
End Sub

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

Все!

Автор: 
Deys

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Для предотвращения регистрации спам-роботов введите символы с картинки.
CAPTCHA на основе изображений
Введите символы, изображенные на картинке.
Разместить свое видео на сайте
Вы можете разместить свои 
видео-уроки на сайте
БЕСПЛАТНО!


Подробнее>>>