Как импортировать макрос в Excel
Обновлено: 20.11.2024
Как скопировать код VBA макроса Excel в книгу, с веб-сайта или из файла примера и куда вставить код. Узнайте, как внести простые изменения в код макроса, если это необходимо. Пошаговые видео, письменные инструкции.
ПРИМЕЧАНИЕ. Если вы хотите записать свой собственный макрос Excel, ознакомьтесь с шагами для начинающих, чтобы записать и протестировать макрос в Excel. Или ознакомьтесь с простыми инструкциями по отображению сообщения в Excel с помощью макроса.
Скопируйте код Excel VBA в:
Копировать код Excel VBA в обычный модуль
Чтобы узнать, как вставить макрос в книгу и запустить макрос, посмотрите этот короткий видеоурок. Письменные инструкции находятся под видео.
Копировать код Excel VBA в обычный модуль
Вместо того, чтобы начинать с нуля, если вам нужен макрос Excel, вы часто можете найти образец кода на авторитетных сайтах в Интернете.
Чтобы скопировать код из этих макросов VBA и добавить его в одну из ваших книг, выполните следующие действия:
- Скопируйте образец кода, который вы хотите использовать
- Откройте книгу, в которую вы хотите добавить код.
- Удерживая нажатой клавишу Alt, нажмите клавишу F11, чтобы открыть редактор Visual Basic.
- Выберите Вставить | Модуль
- Там, где мигает курсор, выберите «Правка | Вставить
Чтобы запустить код:
- На ленте Excel перейдите на вкладку "Вид".
- В крайнем правом углу нажмите "Макросы".
- Выберите макрос в списке и нажмите кнопку "Выполнить".
Копировать код Excel VBA в модуль рабочего листа
Другим типом кода Excel является код события, который запускается автоматически, когда в книге происходит что-то определенное.
Например, если вы вводите число в ячейку или выбираете запись в раскрывающемся списке ячейки, рабочий лист был изменен. Это может вызвать событие Worksheet_Change.
Код события рабочего листа хранится в модуле рабочего листа. Чтобы добавить код события рабочего листа на свой рабочий лист, выполните следующие действия:
- Скопируйте код, который вы хотите использовать
- Выберите рабочий лист, на котором вы запускаете код.
- Щелкните правой кнопкой мыши вкладку листа и выберите Просмотреть код, чтобы открыть редактор Visual Basic.
Копировать код Excel VBA в модуль рабочей книги
Другим типом кода является код события рабочей книги, который следует добавить в модуль кода рабочей книги:
- Скопируйте код, который вы хотите использовать
- Выберите книгу, в которой вы хотите сохранить код.
- Удерживая нажатой клавишу Alt, нажмите клавишу F11, чтобы открыть редактор Visual Basic.
- В Project Explorer найдите свою книгу и откройте список объектов Microsoft Excel.
- Щелкните правой кнопкой мыши объект ThisWorkbook и выберите "Просмотреть код".
- Там, где мигает курсор, выберите «Правка | Вставить
Копировать код Excel VBA из другой книги
Чтобы увидеть шаги по копированию макроса из одной книги в другую в любой версии Excel, просмотрите этот короткий видеоурок. Письменные инструкции находятся под видео.
Копировать код Excel VBA из другой книги
Вы можете найти код в образце книги в Интернете и решить добавить его в одну из своих книг. Вы можете скопировать весь код модуля, выполнив следующие действия:
- Открыть обе книги
- Удерживая нажатой клавишу Alt, нажмите клавишу F11, чтобы открыть редактор Visual Basic.
- В Project Explorer найдите свою книгу и книгу с кодом, который вы хотите скопировать. Скриншот справа, код находится в VBACodeCopy.xls и будет скопирован в MyForm.xlsm
- В книге с кодом нажмите знак +, чтобы просмотреть список модулей.
- Нажмите на модуль, который вы хотите скопировать, и перетащите его на проект, где вы хотите разместить копию.
- Отпустите кнопку мыши, и в рабочей книге появится копия модуля.
Чтобы запустить код:
- На ленте Excel перейдите на вкладку "Вид".
- В крайнем правом углу нажмите "Макросы".
- Выберите макрос в списке и нажмите кнопку "Выполнить".
Разрешить запуск макросов в вашей книге
Чтобы использовать макросы в Excel, вам может потребоваться включить их при открытии файла. Если вы впервые используете макросы на текущем компьютере, вам также может потребоваться настроить параметры безопасности макросов.
Следуйте приведенным ниже инструкциям, чтобы внести эти изменения.
Включить макросы при открытии файла
Когда вы открываете книгу, содержащую макросы, вы можете увидеть предупреждение системы безопасности в верхней части листа над панелью формул.
- Нажмите кнопку "Параметры".
- Нажмите «Включить это содержимое», чтобы разрешить запуск макросов книги, и нажмите «ОК».
Проверьте настройки безопасности макросов
Если вы раньше не запускали макросы, вам может потребоваться изменить уровень безопасности макросов. (Возможно, вам придется согласовать это с вашим ИТ-отделом.)
- На ленте перейдите на вкладку "Разработчик" и в группе "Код" нажмите "Безопасность макросов".
- ПРИМЕЧАНИЕ. Если вкладка "Разработчик" не отображается, выполните описанные здесь действия, чтобы отобразить ее.
- В категории "Параметры макросов" в разделе "Параметры макросов" нажмите "Отключить все макросы с уведомлением".
- Нажмите "ОК".
- Если вы изменили настройку, закройте книгу, а затем снова откройте ее.
Запустить макрос Excel
После копирования макроса в обычный модуль выполните следующие действия, чтобы запустить макрос. Если макрос не запускается, проверьте настройки макроса.
Чтобы запустить макрос Excel:
- Скопируйте код макроса в обычный модуль кода в вашем файле.
- Затем на вкладке ленты "Вид" нажмите верхнюю часть кнопки "Макрос", чтобы открыть окно "Макрос".
- В списке макросов нажмите на макрос, который хотите запустить.
- Нажмите кнопку "Выполнить".
Создание макроса события рабочего листа
Чтобы увидеть шаги по созданию макроса события изменения рабочего листа Excel, посмотрите это короткое видео.
Изменить скопированный код Excel VBA
Если вы скопируете код VBA в свой файл Excel, вам может потребоваться внести изменения в имена объектов или другие настройки, чтобы код правильно работал в вашем файле. Вот три вещи, которые нужно проверить, прежде чем пытаться запустить код в вашем файле:
Проверьте имена и диапазоны листов
Если в коде есть имена листов или ссылки на диапазоны, вы можете изменить их, чтобы они соответствовали вашей книге.
- В коде найдите ссылки на "Рабочие листы" на "Листы" и измените их на имена листов в своей книге.
- Также найдите ссылки на "диапазон", например Range("A1:G100"), и настройте их так, чтобы они соответствовали местоположению ваших данных.
Эти ссылки могут быть в начале процедуры в операторе Set:
или в другом месте кода.
Если вы запустите код без изменения ссылки, вы можете увидеть сообщение об ошибке: Ошибка выполнения '9': Нижний индекс вне допустимого диапазона
Чтобы увидеть, в чем проблема, нажмите кнопку "Отладка", и строка кода будет выделена желтым цветом.
Чтобы остановить код, откройте меню "Выполнить" и нажмите "Сброс".
Измените имя листа в выделенной строке, сохраните изменения и повторите попытку кода.
Добавить и назвать объекты
Если код относится к объектам на листе, обязательно добавьте эти объекты в свою книгу и используйте правильное имя объекта в коде.
Например, в коде для поля со списком проверки данных вам нужно добавить поле со списком на лист и назвать его TempCombo. Или, если ваше поле со списком имеет другое имя, измените ссылки на код, чтобы они совпадали.
Укажите целевые столбцы или строки
Некоторые коды предназначены для запуска при изменении ячейки в определенной строке или столбце.
Например, в примере кода, показанном ниже, красная точка указывает на то, что столбец 3 — единственный, в котором произойдет изменение.
ПРИМЕЧАНИЕ. Во всех этих примерах вы можете использовать строку вместо столбца, чтобы ограничить цель определенными строками.
A) Если вы хотите, чтобы в вашей книге код запускался при изменении ячейки в столбце E, вы можете изменить 3 на 5.
B) Или добавьте в код дополнительные столбцы. Например:
C) Если вы не хотите ограничивать код определенным столбцом, вы можете удалить две строки (If. End If), отмеченные красными кружками. В этом случае код будет выполняться для изменения в каждом столбце.
D) Если вы хотите, чтобы код выполнялся для любого столбца, КРОМЕ определенного столбца, используйте оператор Not Equal To -- <> -- вместо знака равенства. Например:
Получить образец файла
Чтобы просмотреть примеры модулей рабочих книг, модулей рабочих листов и обычных модулей кода, загрузите файл примера добавления кода в рабочую книгу. Заархивированный файл имеет формат xlsm и содержит макросы. Не забудьте включить макросы при открытии файла, если вы хотите протестировать макросы.
Макросы помогут вам сэкономить драгоценное время при выполнении повторяющихся задач для вашего бизнеса в Microsoft Excel. Предположим, например, что вы хотите изменить цвет ячеек электронной таблицы на красный, если их значения превышают 1000. Выполнение этого вручную может занять некоторое время, но макрос Excel может выполнить эту задачу одним нажатием кнопки. Если вы не хотите писать код Visual Basic, необходимый для создания макроса, вы можете импортировать макрос, написанный кем-то другим, в вашу электронную таблицу.
Добавить вкладку "Разработчик"
Запустите Microsoft Excel и откройте электронную таблицу, содержащую макрос, который вы хотите импортировать в другую электронную таблицу.
Перейдите к следующему разделу, если вы видите вкладку "Разработчик" на ленте Excel; если нет, нажмите «Файл», а затем нажмите «Параметры».
Нажмите "Настроить ленту" и перейдите в поле "Основные вкладки", которое содержит список вкладок для подключения к Excel.
Поставьте галочку рядом с "Разработчик" и нажмите "ОК", чтобы добавить вкладку "Разработчик" на ленту.
Включить безопасность макросов
Перейдите на вкладку "Разработчик", затем нажмите "Безопасность макросов", чтобы просмотреть окно Центра управления безопасностью, содержащее параметры безопасности.
Нажмите переключатель "Включить все макросы (не рекомендуется, может выполняться потенциально опасный код)", чтобы выбрать его. Выбор этого параметра позволяет временно включить все макросы на листе.
Нажмите "ОК", чтобы закрыть окно Центра управления безопасностью и вернуться в главное окно Excel, содержащее вашу электронную таблицу.
Импорт кода макроса в другую таблицу
Перейдите на вкладку "Разработчик", а затем нажмите кнопку "Макросы". Excel отображает диалоговое окно «Макрос», содержащее список макросов электронной таблицы.
Нажмите макрос, который нужно импортировать в другую электронную таблицу, а затем нажмите «Изменить», чтобы открыть редактор Visual Basic. Слева появится окно проекта, содержащее список модулей; справа появится окно кода, содержащее код макроса VBA.
Щелкните внутри окна кода и нажмите "Ctrl-A", чтобы выбрать код окна. Нажмите «Ctrl-C», чтобы скопировать этот код в буфер обмена Windows.
Нажмите "Alt-Q", чтобы закрыть редактор Visual Basic и вернуться к электронной таблице в главном окне Excel.
Откройте рабочий лист, в который вы хотите импортировать скопированный код макроса. Щелкните вкладку "Разработчик", затем нажмите кнопку "Visual Basic", чтобы открыть редактор Visual Basic.
Нажмите "Вставить" и выберите "Модуль". Редактор создает новый модуль, содержащий ваш макрос, а также новое пустое окно кода. Щелкните правой кнопкой мыши внутри этого окна и нажмите "Ctrl-V", чтобы вставить код, скопированный из другой электронной таблицы, в окно "Код".
Нажмите «Alt-Q», чтобы закрыть окно редактора Visual Basic и вернуться в главное окно Excel. Нажмите кнопку «Макросы», чтобы открыть диалоговое окно «Макросы». Вы увидите новый макрос, который вы импортировали, в списке макросов. Щелкните этот макрос, а затем нажмите "Выполнить", если хотите запустить и протестировать макрос.
Можно использовать макрокоманду ImportExportSpreadsheet для импорта или экспорта данных между текущей базой данных Access (.mdb или .accdb) и файлом электронной таблицы. Вы также можете связать данные в электронной таблице Excel с текущей базой данных Access. С помощью связанной электронной таблицы вы можете просматривать данные электронной таблицы с помощью Access, сохраняя при этом полный доступ к данным из вашей программы работы с электронными таблицами Excel. Вы также можете ссылаться на данные в файле электронной таблицы Lotus 1-2-3, но эти данные также доступны только для чтения в Access.
Примечание. Начиная с Access 2010 макрокоманда TransferSpreadsheet была переименована в ImportExportSpreadsheet.
Примечание. Это действие невозможно, если база данных не является доверенной.
Настройка
Макрокоманда ImportExportSpreadsheet имеет следующие аргументы.
Аргумент действия
Описание
Тип передачи
Тип перевода, который вы хотите сделать. Выберите «Импорт», «Экспорт» или «Ссылка» в поле «Тип передачи» в разделе «Аргументы действия» окна разработки макроса. По умолчанию используется импорт.
Примечание. Тип передачи Link не поддерживается для проектов Access (.adp).
Тип электронной таблицы
Тип таблицы для импорта, экспорта или ссылки. Вы можете выбрать один из нескольких типов электронных таблиц в поле. По умолчанию используется рабочая книга Excel.
Примечание. Вы можете импортировать и связывать (только для чтения) файлы Lotus .WK4, но вы не можете экспортировать данные Access в этот формат электронных таблиц. Access также больше не поддерживает импорт, экспорт или связывание данных из электронных таблиц Lotus .WKS или Excel версии 2.0 с помощью этого действия. Если вы хотите импортировать или связать данные электронной таблицы в формате Excel версии 2.0 или Lotus .WKS, преобразуйте данные электронной таблицы в более позднюю версию Excel или Lotus 1-2-3, прежде чем импортировать или связывать данные в Access.
Имя таблицы Access, в которую необходимо импортировать данные электронной таблицы, экспортировать данные электронной таблицы или связать данные электронной таблицы с ней.Вы также можете ввести имя запроса выбора Access, из которого вы хотите экспортировать данные. Это обязательный аргумент.
Если выбрать «Импорт» в качестве аргумента «Тип передачи», Access добавит данные электронной таблицы в эту таблицу, если она уже существует. В противном случае Access создает новую таблицу, содержащую данные электронной таблицы.
В Access нельзя использовать оператор SQL для указания данных для экспорта при использовании макрокоманды ImportExportSpreadsheet. Вместо использования инструкции SQL необходимо сначала создать запрос, а затем указать имя запроса в аргументе Имя таблицы.
Имя файла электронной таблицы для импорта, экспорта или ссылки. Включите полный путь. Это обязательный аргумент.
Access создает новую электронную таблицу при экспорте данных из Access. Если имя файла совпадает с именем существующей электронной таблицы, Access заменяет существующую электронную таблицу, если вы не экспортируете книгу в Excel версии 5.0 или более поздней. В этом случае Access копирует экспортированные данные на следующий доступный новый лист в книге.
Если вы импортируете или связываете электронную таблицу Excel версии 5.0 или более поздней, вы можете указать конкретный лист с помощью аргумента Range.
Имена полей
Указывает, содержит ли первая строка электронной таблицы имена полей. Если вы выберете «Да», Access будет использовать имена в этой строке в качестве имен полей в таблице Access при импорте или связывании данных электронной таблицы. Если вы выберете Нет, Access будет рассматривать первую строку как обычную строку данных. По умолчанию нет.
Когда вы экспортируете таблицу Access или выбираете запрос в электронную таблицу, имена полей вставляются в первую строку электронной таблицы независимо от того, что вы выбираете в этом аргументе.
Диапазон ячеек для импорта или связывания. Оставьте этот аргумент пустым, чтобы импортировать или связать всю электронную таблицу. Вы можете ввести имя диапазона в электронной таблице или указать диапазон ячеек для импорта или связи, например A1:E25 (обратите внимание, что синтаксис A1..E25 не работает в Access 97 или более поздних версиях). Если вы импортируете или связываетесь с электронной таблицей Excel версии 5.0 или более поздней, вы можете добавить к диапазону префикс имени рабочего листа и восклицательный знак; например, Бюджет!A1:C7.
Примечание. При экспорте в электронную таблицу этот аргумент необходимо оставить пустым. Если вы введете диапазон, экспорт завершится ошибкой.
Примечания
Вы можете экспортировать данные из запросов выбора Access в электронные таблицы. Access экспортирует результирующий набор запроса, рассматривая его как таблицу.
Данные электронной таблицы, которые вы добавляете к существующей таблице Access, должны быть совместимы со структурой таблицы.
Каждое поле в электронной таблице должно иметь тот же тип данных, что и соответствующее поле в таблице.
Поля должны быть в том же порядке (если вы не установили для аргумента Has Field Names значение Yes, в этом случае имена полей в электронной таблице должны совпадать с именами полей в таблице).
Это действие макроса аналогично щелчку на вкладке «Внешние данные» и щелчку «Excel» в группе «Импорт» или «Экспорт». Эти команды можно использовать для выбора источника данных, например Access или типа базы данных, электронной таблицы или текстового файла. Если вы выбираете электронную таблицу, появляется ряд диалоговых окон или запускается мастер доступа, в котором вы выбираете имя электронной таблицы и другие параметры. Аргументы макрокоманды ImportExportSpreadsheet отражают параметры в этих диалоговых окнах или в мастерах.
Примечание. Если вы запрашиваете или фильтруете связанную электронную таблицу, запрос или фильтр чувствительны к регистру.
Если вы создадите ссылку на электронную таблицу Excel, которая открыта в режиме редактирования, Access будет ждать, пока таблица Excel не выйдет из режима редактирования, прежде чем завершить связывание; тайм-аута нет.
Чтобы выполнить действие ImportExportSpreadsheet в модуле Visual Basic для приложений (VBA), используйте метод TransferSpreadsheet объекта DoCmd.
Итог: узнайте, как вставлять код 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.
Сохранение книги в виде файла с поддержкой макросов
Каждый раз, когда вы помещаете макрос в файл Excel, в котором его еще нет, важно сохранить файл как книгу с поддержкой макросов (.xlsm). Когда вы собираетесь сохранить свою книгу, вы можете получить это приглашение с вопросом, хотите ли вы проигнорировать код и сохранить его как книгу без макросов. Вы хотите выбрать Нет.
Затем вы хотите изменить тип файла на книгу Excel с поддержкой макросов (.xlsm). После того, как вы выбрали этот параметр в раскрывающемся меню для типа файла, просто нажмите «Сохранить».
Если вы не сохраните файл как книгу с поддержкой макросов, скопированный код VB не сможет быть запущен.
Вариант 2. Перетащите модуль
Еще один способ вставить код в книгу — перетащить модуль кода из одной книги в другую.
Этот метод перетаскивания также можно использовать для модулей Userform и Class.
Удаление модуля кода
Возможно, вы преждевременно удалили файл во время перетаскивания, и модуль оказался не в той книге. Если вы хотите удалить модуль, процесс прост. Просто щелкните правой кнопкой мыши модуль, который хотите удалить, и выберите вариант его удаления.
Вариант 3. Копирование модулей листа, содержащих код
К сожалению, описанный выше процесс перетаскивания не работает для модулей Листа. Однако процесс перемещения или копирования листов (и код, который к ним прилагается) также очень прост.
Теперь лист (и код, который к нему прилагается) копируется в целевую книгу.
В приведенном выше примере я копирую лист с кодом, который автоматически создает или обновляет оглавление всякий раз, когда в файл вносятся изменения. Подробнее об этом методе я рассказываю в своем видео о том, как создать оглавление, которое автоматически обновляется.
Вариант 4 — Экспорт и импорт модулей
Наконец, вы можете экспортировать и импортировать модули, а не просто копировать их. Это хороший вариант для обмена модулями с другими людьми. Это также позволяет вам сохранять их в папку на вашем компьютере для использования в будущем.
Заключение
Импортировать модули кода или макросы очень просто!
Вы также можете использовать любой из этих вариантов для копирования кода в личную книгу макросов. Если вы еще не настроили личную книгу макросов, я объясню, как это сделать и почему это хорошая идея, в этой серии постов и видео: Как создать личную книгу макросов.
Ознакомьтесь с этой публикацией о модулях кода VBA и о том, как запускать макросы на основе пользовательских событий, чтобы узнать больше о различных типах модулей кода.
Я надеюсь, что эти четыре варианта помогут вам лучше интегрировать макросы и модули в ваши файлы Excel. Если у вас есть какие-либо вопросы о них, дайте мне знать, оставив комментарий ниже.
Бесплатный вебинар по макросам и VBA
Если вам интересно узнать больше о макросах, в настоящее время я провожу бесплатный веб-семинар под названием "7 шагов для начала работы с макросами и VBA". Он будет работать всю эту неделю, и регистрация абсолютно бесплатна.
Во время вебинара я объясню, почему вам может понадобиться изучить VBA, и расскажу о многих основных концепциях кодирования, которые помогут вам начать работу. Я прыгаю в Excel и редактор VB и рассказываю, как написать и запустить наш первый макрос. Даже если вы уже некоторое время используете VBA, я уверен, что вы узнаете несколько новых советов.
Читайте также: