Как скопировать макрос 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.
- Скопируйте исходный код, используя сочетание клавиш Ctrl + C (или контекстное меню). В приведенном ниже примере я скопировал код из этой публикации Excel Campus.
- В Excel откройте редактор VB, нажав кнопку Visual Basic на вкладке "Разработчик". Или используйте сочетание клавиш Alt + F11 .
- На панели проекта редактора VB выберите рабочую книгу, в которую вы хотите поместить код. Затем, если на этом листе еще нет модуля кода, вы можете вставить его, выбрав параметр «Вставить», а затем Модуль. (Для этого используется сочетание клавиш ALT + I + M .)
- После добавления модуля можно дважды щелкнуть этот новый проект Module1, чтобы открыть панель кода, если она еще не открыта. Сюда вы собираетесь вставить код, скопированный на шаге 1.
- Откройте как файл с сохраненным макросом, так и тот, в котором вы хотите его сохранить.
- Перейдите на вкладку "Разработчик" в любом файле.
- Нажмите кнопку Visual Basic.
- Выберите лист, на котором вы хотите запустить только что скопированный макрос.
- Нажмите кнопку "Макросы" на вкладке "Разработчик".
Сохранение книги в виде файла с поддержкой макросов
Каждый раз, когда вы помещаете макрос в файл Excel, в котором его еще нет, важно сохранить файл как книгу с поддержкой макросов (.xlsm). Когда вы собираетесь сохранить свою книгу, вы можете получить это приглашение с вопросом, хотите ли вы проигнорировать код и сохранить его как книгу без макросов. Вы хотите выбрать Нет.
Затем вы хотите изменить тип файла на книгу Excel с поддержкой макросов (.xlsm).После того, как вы выбрали этот параметр в раскрывающемся меню для типа файла, просто нажмите «Сохранить».
Если вы не сохраните файл как книгу с поддержкой макросов, скопированный код VB не сможет быть запущен.
Вариант 2. Перетащите модуль
Еще один способ вставить код в книгу — перетащить модуль кода из одной книги в другую.
Этот метод перетаскивания также можно использовать для модулей Userform и Class.
Удаление модуля кода
Возможно, вы преждевременно удалили файл во время перетаскивания, и модуль оказался не в той книге. Если вы хотите удалить модуль, процесс прост. Просто щелкните правой кнопкой мыши модуль, который хотите удалить, и выберите вариант его удаления.
Вариант 3. Копирование модулей листа, содержащих код
К сожалению, описанный выше процесс перетаскивания не работает для модулей Листа. Однако процесс перемещения или копирования листов (и код, который к ним прилагается) также очень прост.
Теперь лист (и код, который к нему прилагается) копируется в целевую книгу.
В приведенном выше примере я копирую лист с кодом, который автоматически создает или обновляет оглавление всякий раз, когда в файл вносятся изменения. Подробнее об этом методе я рассказываю в своем видео о том, как создать оглавление, которое автоматически обновляется.
Вариант 4 — Экспорт и импорт модулей
Наконец, вы можете экспортировать и импортировать модули, а не просто копировать их. Это хороший вариант для обмена модулями с другими людьми. Это также позволяет вам сохранять их в папку на вашем компьютере для использования в будущем.
Заключение
Импортировать модули кода или макросы очень просто!
Вы также можете использовать любой из этих вариантов для копирования кода в личную книгу макросов. Если вы еще не настроили личную книгу макросов, я объясню, как это сделать и почему это хорошая идея, в этой серии постов и видео: Как создать личную книгу макросов.
Ознакомьтесь с этой публикацией о модулях кода VBA и о том, как запускать макросы на основе пользовательских событий, чтобы узнать больше о различных типах модулей кода.
Я надеюсь, что эти четыре варианта помогут вам лучше интегрировать макросы и модули в ваши файлы Excel. Если у вас есть какие-либо вопросы о них, дайте мне знать, оставив комментарий ниже.
Бесплатный вебинар по макросам и VBA
Если вам интересно узнать больше о макросах, в настоящее время я провожу бесплатный веб-семинар под названием "7 шагов для начала работы с макросами и VBA". Он будет работать всю эту неделю, и регистрация абсолютно бесплатна.
Во время вебинара я объясню, почему вам может понадобиться изучить VBA, и расскажу о многих основных концепциях кодирования, которые помогут вам начать работу. Я прыгаю в Excel и редактор VB и рассказываю, как написать и запустить наш первый макрос. Даже если вы уже некоторое время используете VBA, я уверен, что вы узнаете несколько новых советов.
Макросы можно запускать, только если файл, в котором они сохранены, открыт. Например, если у вас есть макрос в файле А, который вы хотите часто использовать в файле Б, вам придется открывать файл А каждый раз, когда вы хотите запустить этот макрос (или сохранить его в личной книге). Вместо этого вы можете сэкономить время и скопировать существующий макрос в файл, где вы хотите его использовать.
Копировать макросы из другой книги
Макросы, которые вы создаете в Excel, хранятся в модулях, и вы можете копировать эти модули в другие книги.
В окне VBA на левой панели отображается представление Project Explorer. Это показывает все открытые книги и модули, содержащие макросы для каждого файла.
Каждый раз, когда вы открываете Excel и записываете макрос или несколько макросов, они сохраняются в модуле. Если вы закрываете и снова открываете Excel, все новые макросы сохраняются в отдельном модуле.
Модуль копируется в файл.
Проверить скопированный макрос
Как и при создании макроса, важно протестировать макрос, который вы скопировали в другую книгу. Если вы случайно скопировали не тот, вам нужно немедленно исправить ошибку.
В диалоговом окне "Макрос" убедитесь, что в меню "Макросы" выбран параметр "Эта книга". Это лучший способ убедиться, что макрос был скопирован непосредственно в активную книгу.
Макрос, который вы скопировали в файл, должен появиться в списке макросов для этой книги.
БЕСПЛАТНЫЙ краткий справочник
Бесплатно для распространения с нашей благодарностью; мы надеемся, что вы рассмотрите наше платное обучение.
Мы покажем, как скопировать существующий файл Пример файла 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: em>
Теперь у нас есть два файла в папке VBA. Результат кода показан на изображении 3:
Изображение 3. Скопируйте и переименуйте файл
Программирование VBA стало проще
Прекратите искать код VBA в Интернете. Узнайте больше об AutoMacro — конструкторе кода VBA, который позволяет новичкам создавать процедуры с нуля с минимальными знаниями в области кодирования и множеством функций, позволяющих сэкономить время для всех пользователей!
Генератор кода VBA
Надстройка примеров кода VBA
Легкий доступ ко всем примерам кода на нашем сайте.
Просто перейдите в меню, нажмите, и код будет вставлен прямо в ваш модуль. Надстройка .xlam.
Читайте также: