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

Обновлено: 21.11.2024

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

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

В Windows выберите «Файл» > «Параметры» > «Настроить ленту».

Для Mac выберите Excel > Настройки. > Лента и панель инструментов.

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

Обзор макросов и VBA

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

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

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

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

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

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

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

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

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

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

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

Module1 скопирован из Book2.xlsm

Копия Module1 скопирована в Book1.xlsm

Нужна дополнительная помощь?

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

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

Уровень навыков: начинающий

Загрузить базовый файл

M_TOC.bas (2,3 КБ)

Копирование или импорт кода VBA

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

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

Вариант 1. Скопируйте и вставьте код VBA

Первый вариант — просто скопировать код из любого источника, из которого вы его берете, а затем вставить его в редактор VB.

  1. Скопируйте исходный код, используя сочетание клавиш Ctrl + C (или контекстное меню). В приведенном ниже примере я скопировал код из этой публикации Excel Campus.
  2. В Excel откройте редактор VB, нажав кнопку Visual Basic на вкладке "Разработчик". Или используйте сочетание клавиш Alt + F11 .
  3. На панели проекта редактора VB выберите рабочую книгу, в которую вы хотите поместить код. Затем, если на этом листе еще нет модуля кода, вы можете вставить его, выбрав параметр «Вставить», а затем Модуль. (Для этого используется сочетание клавиш ALT + I + M .)
  4. После добавления модуля можно дважды щелкнуть этот новый проект Module1, чтобы открыть панель кода, если она еще не открыта. Сюда вы собираетесь вставить код, скопированный на шаге 1.
  5. Сохранение книги в виде файла с поддержкой макросов

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

    Затем вы хотите изменить тип файла на книгу Excel с поддержкой макросов (.xlsm).После того, как вы выбрали этот параметр в раскрывающемся меню для типа файла, просто нажмите «Сохранить».

    Если вы не сохраните файл как книгу с поддержкой макросов, скопированный код VB не сможет быть запущен.

    Вариант 2. Перетащите модуль

    Еще один способ вставить код в книгу — перетащить модуль кода из одной книги в другую.

    Этот метод перетаскивания также можно использовать для модулей Userform и Class.

    Удаление модуля кода

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

    Вариант 3. Копирование модулей листа, содержащих код

    К сожалению, описанный выше процесс перетаскивания не работает для модулей Листа. Однако процесс перемещения или копирования листов (и код, который к ним прилагается) также очень прост.

    Теперь лист (и код, который к нему прилагается) копируется в целевую книгу.

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

    Вариант 4 — Экспорт и импорт модулей

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

    Заключение

    Импортировать модули кода или макросы очень просто!

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

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

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

    Бесплатный вебинар по макросам и VBA

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

    Во время вебинара я объясню, почему вам может понадобиться изучить VBA, и расскажу о многих основных концепциях кодирования, которые помогут вам начать работу. Я прыгаю в Excel и редактор VB и рассказываю, как написать и запустить наш первый макрос. Даже если вы уже некоторое время используете VBA, я уверен, что вы узнаете несколько новых советов.

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

    Копировать макросы из другой книги

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

    1. Откройте как файл с сохраненным макросом, так и тот, в котором вы хотите его сохранить.
    2. Перейдите на вкладку "Разработчик" в любом файле.
    3. Нажмите кнопку Visual Basic.

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

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

    Модуль копируется в файл.

    Проверить скопированный макрос

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

    1. Выберите лист, на котором вы хотите запустить только что скопированный макрос.
    2. Нажмите кнопку "Макросы" на вкладке "Разработчик".

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

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

    БЕСПЛАТНЫЙ краткий справочник

    Бесплатно для распространения с нашей благодарностью; мы надеемся, что вы рассмотрите наше платное обучение.

    Мы покажем, как скопировать существующий файл Пример файла 1.xlsx в папку Папка VBA. В этом примере мы не будем переименовывать файл, просто скопируем и перезапишем его. В настоящее время в папке есть только один файл:

    Изображение 1. Файл в папке C:\VBA Folder

    Вот код:

    Сначала необходимо создать объект класса Scripting.FileSystemObject:

    Затем мы можем использовать метод CopyFile:

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

    Давайте теперь посмотрим, что произойдет, если у нас будут те же места назначения, но для параметра Overwrite установлено значение False. Вам просто нужно изменить эту строку кода:

    В результате вы получите сообщение об ошибке, как показано на изображении 2:

    Изображение 2. Ошибка при копировании файла

    Скопировать и переименовать файл

    Другой возможный вариант при копировании файла — переименовать его. Это похоже на копирование файла, но теперь вам просто нужно указать путь назначения с другим именем. Вот код:

    Как видно из последней строки кода, мы хотим скопировать файл Sample file 1.xlsx в ту же папку и назвать его Sample file Copy.xlsx:

    Теперь у нас есть два файла в папке VBA. Результат кода показан на изображении 3:

    Изображение 3. Скопируйте и переименуйте файл

    Программирование VBA стало проще

    Прекратите искать код VBA в Интернете. Узнайте больше об AutoMacro — конструкторе кода VBA, который позволяет новичкам создавать процедуры с нуля с минимальными знаниями в области кодирования и множеством функций, позволяющих сэкономить время для всех пользователей!

    Генератор кода VBA

    Надстройка примеров кода VBA

    Легкий доступ ко всем примерам кода на нашем сайте.

    Просто перейдите в меню, нажмите, и код будет вставлен прямо в ваш модуль. Надстройка .xlam.

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