Создание надстроек для Microsoft Excel
Как сделать и установить надстройку в Excel
Чтобы создать, добавить и включить надстройку с макросом, вам необходимо:
SubMyMakros()
ДимпользовательAs String
Dimdata_segodnyaAs Данные
пользователь = Application.UserName
data_segodnya = Сейчас
MsgBox «Пользователь запустил макрос:» & пользователь & vbNewLine & data_segodnya
Конец подзаголовка
- Создайте новую книгу: ФАЙЛ — Новый — Пустая книга. Или нажмите сочетание клавиш CTRL + N.
- Откройте редактор макросов: РАЗРАБОТЧИК — Код — Visual Basic».
- Вставьте новый модуль, выбрав инструмент: «Вставить» — «Модуль».
- В окне модуля введите свой код макроса. Возьмем простейший пример макроса:
- Закройте окно редактора макросов и выберите инструмент: «ФАЙЛ» — «Сохранить как» (CTRL + S). В поле Filename: введите имя вашей программы тестирования. В раскрывающемся списке «Тип файлов:» выберите значение «Надстройка Excel 97-2003» (* .xla). Автоматически откроется папка для установки надстроек: C: Documents and SettingsUser_Name AppDataRoamingMicrosoftAddIns. И нажмите кнопку «Сохранить».
- Перед установкой надстройки в Excel закройте все открытые книги и перезапустите Excel.
- Выберите инструмент: «ФАЙЛ» — «Параметры» — «Дополнения». В нижней части раскрывающегося списка «Управление:» выберите параметр «Надстройки Excel» и нажмите кнопку «Перейти».
- В появившемся диалоговом окне «Дополнения» нажмите кнопку «Обзор», затем найдите и найдите свое имя, поставьте галочку на нем и нажмите кнопку «ОК». Если вы не можете найти имя, нажмите кнопку «Обзор», чтобы указать путь к файлу с надстройкой.
Надстройка VBA готова! Теперь во всех открытых книгах вы сможете использовать макросы из вашего * .xla файла. Чтобы проверить это, снова откройте редактор Visual Basic (ALT + F11).
Как видите, теперь вы всегда можете найти его в списке проектов и использовать все его макросы в любом другом файле.
Запуск редактора Visual Basic
Самый простой способ запустить редактор Visual Basic в Excel — нажать комбинацию клавиш Alt + F11 (то есть нажать клавишу Alt и, удерживая ее, нажать клавишу F11). Откроется окно редактора Visual Basic, как показано на рисунке ниже. Обратите внимание, что окно Excel остается открытым и находится за окном редактора.
Окна редактора Visual Basic
В процессе работы в редакторе Visual Basic в Excel вы можете открывать различные окна. Окна управляются из меню «Вид», расположенного в верхней части окна редактора VBA. Ниже приводится описание отдельных окон.
Окно проекта (Project)
Окно проекта открывается в левой части редактора VBA (показано на изображении выше). В этом окне для каждой открытой книги создается проект VBA. Проект VBA — это набор всех объектов и модулей VBA, связанных с текущей книгой. Изначально в него входят:
- Объект ThisWorkbook, связанный с книгой Excel;
- Рабочие элементы, связанные с каждым листом в текущей книге Excel.
Вы можете добавить в проект объекты Userform, Module и Class Module. Если вы посмотрите на изображение выше, вы увидите, что объект Module с именем Module1 был добавлен в проект VBA для Book1.xlsm.
Вот как создать новый объект Userform, Module или Class Module:
- В окне «Проект» выберите книгу, в которую хотите добавить объект, и щелкните ее правой кнопкой мыши.
- В появившемся меню нажмите «Вставить» и в раскрывающемся меню выберите «Пользовательский модуль», «Модуль» или «Модуль класса.
Для каждого из описанных выше объектов предусмотрено специальное окно, в котором будет создан и сохранен новый код VBA. Порядок следующий:
- Код, относящийся к книге, должен быть вставлен в соответствующий объект ThisWorkbook);
- Код, относящийся к рабочему листу, должен быть вставлен в соответствующий объект Sheet);
- В Module> необходимо ввести более общий код>;
- Код для нового объекта необходимо ввести в Class Module>;
- Если вам нужно создать диалог для взаимодействия с пользователем, вы можете использовать Userform.
Окно кода (Code)
Двойной щелчок по любому объекту в окне проекта открывает соответствующее окно кода для ввода кода VBA с клавиатуры. На одном из рисунков выше показано окно кода для Module1.
Когда вы вставляете код VBA в окно кода, редактор Visual Basic отслеживает ввод, ищет ошибки в коде и выделяет код, который необходимо исправить.
Установка надстройки в Excel 2010
Стоит отметить, что в Excel 2010 редактор Visual Basic устанавливается как отдельный компонент пакета общих инструментов Office и называется Visual Basic для приложений. Очень легко узнать, установлен ли у вас редактор Visual Basic. Мы должны запустить это! О том, как это сделать, можно прочитать отдельно. Если редактор Visual Basic не запускается, переустанавливаем его. Итак, приступим к установке надстроек в Excel!
вы можете установить надстройку в Excel 2010 так же, как и в Excel 2007.
Шаг 1. Сохраните файл надстройки на свой компьютер и запомните, где он хранился (местоположение).
Шаг 2. Запустите Excel 2010, выберите вкладку «Файл», затем «Параметры Excel», как показано на рисунке
Шаг 3. В открывшемся окне «Параметры Excel» в поле «Контроль:» выберите «Надстройки Excel» и нажмите «Перейти…”
Шаг 4. В следующем окне с названием «Надстройки» отображается список доступных надстроек, которые можно включать и отключать, устанавливая и снимая флажки перед соответствующими названиями надстроек. Чтобы добавить (подключить) новые надстройки, нажмите кнопку «Обзор”.
Появится окно «Обзор», отправляющее нас искать надстройки в папке с названием «Надстройки», и это имеет смысл.
Именно в этом месте должны быть размещены дополнительные файлы для максимально быстрого доступа как для приложения, так и для самих пользователей. Размещение надстроек в папке надстроек ускоряет загрузку Excel и подключение к нему компонентов при последующих запусках. Перемещаем (добавляем) в это окно (в эту папку) файл, который присутствовал на шаге 1. Если по какой-то причине вы не могли или не хотели помещать свои дополнения в папку Add-ons, то через » В окне «Обзор» вы переместитесь в то место, где изначально был сохранен файл надстройки. Дважды щелкните выбранный файл, и надстройка будет добавлена в список доступных надстроек. Все, надстройка установлена. Обращаю ваше внимание на то, что если после установки файл надстройки будет перемещен в другое место на жестком диске или изменится имя папки, в которой он находится, весь процесс установки придется повторить.
Если вы установили готовые надстройки для Excel 2010 с этого сайта, после завершения установки на ленте будет сформирована новая вкладка «Надстройки». Появятся кнопки, запускающие макросы на настраиваемой панели инструментов.
Начиная с Excel 2010 появилась возможность устанавливать надстройки из вкладки «Разработчик”.
Установка надстройки в Excel 2013
Надстройки в Excel 2013 устанавливаются через Файл / Параметры / Надстройки, после чего нажимается кнопка «Перейти» и необходимые надстройки связываются в диспетчере надстроек. Окно диспетчера дополнений можно вызвать с помощью кнопки, расположенной на вкладке «Разработчик”.
Быстрая установка надстроек через вкладку “Разработчик”
Начиная с Excel 2010, на вкладку «Разработчик» была добавлена новая группа кнопок надстроек. По умолчанию эта вкладка отсутствует на ленте Excel; чтобы просмотреть его, перейдите в «Файл» / «Параметры» / «Настроить ленту» и установите флажок перед полем «Разработчик» в правой части диалогового окна. Затем на ленте приложения появляется одноименная вкладка с группой кнопок надстроек. С помощью одного из них вызывается менеджер надстроек, в котором вы можете выбрать файл надстройки для установки.
Используя расположенную рядом кнопку, вы можете управлять надстройками COM.
Удаление файла надстройки
Итак, из окна выше мы узнали текущее состояние надстройки, которую собираемся удалить. Надстройка test.xla активна, поэтому перейдите в поле «Управление», выберите «Надстройки Excel» из списка и нажмите кнопку «Перейти». Снимите флажок перед названием надстройки.
Все, надстройка неактивна, мы отключили ее. Теперь вы можете удалить файл. Местонахождение файла мы уже выяснили чуть ранее, поэтому остается только перейти в указанную папку и удалить этот файл (вы можете переместить файл в другую папку или переименовать его, если надстройка будет использоваться в будущее). Вот и все, на самом деле надстройка уже удалена, но продолжает оставаться в списке доступных надстроек, а в некоторых случаях может вызвать некоторые неудобства, заставляя Excel отображать сообщение с текстом «Не удалось найти файл. Убедитесь, что имя и расположение файла указаны правильно. При попытке открыть файл из списка недавно использованных файлов убедитесь, что файл не был переименован, перемещен или удален».
Инструкция по отключению надстройки
- Откройте любой файл Excel или пустую книгу
- Откройте параметры Excel
- Перейти к списку дополнений
- Отключите надстройку VBA-Excel, сняв с нее отметку и нажав ОК.
В результате вкладка с надстройкой исчезнет с вашего компьютера и больше не будет загружаться с помощью Excel.
Вы можете подключить надстройку, когда вам это нужно.
Добавляем в надстройку макросы
Наша надстройка подключена к Excel и работает нормально, но пока не содержит макросов. Заваливаем. Для этого откройте редактор Visual Basic, нажав Alt + F11 или нажав кнопку Visual Basic на вкладке «Разработчик». Если вкладка «Разработчик» не отображается, ее можно просмотреть в меню «Файл» — «Параметры» — «Настроить ленту» («Файл -« Параметры »-« Настроить ленту).
В левом верхнем углу редактора должно быть окно проекта (если оно не отображается, включите его через меню View — Project Explorer):
В этом окне отображаются все открытые книги и запущенные надстройки Microsoft Excel, включая наш проект VBA (MyExcelAddin.xlam). Выберите его с помощью мыши и добавьте новый модуль через меню «Вставка — Модуль». В этом модуле мы будем хранить код VBA наших дополнительных макросов.
Вы можете набрать код с нуля (если умеете программировать) или скопировать где-нибудь готовый код (что намного проще). Давайте поместим простой, но полезный макрос в пустой модуль, который мы только что добавили, чтобы проверить его:
После ввода кода не забудьте нажать кнопку сохранения (дискета) в верхнем левом углу.
Наш макрос FormulasToValues, как вы легко понимаете, преобразует формулы в значения в предварительно выбранном диапазоне. Иногда эти макросы также называют процедурами. Для его запуска необходимо выделить ячейки с формулами и открыть специальный диалог макроса на вкладке «Разработчик» — «Макрос» или нажав Alt + F8. В этом окне обычно отображаются макросы, доступные из всех открытых книг, но дополнительные макросы здесь не отображаются. В любом случае, мы можем ввести имя нашей процедуры в поле Macro name, затем нажать кнопку Run, и наш макрос будет работать:
Здесь вы также можете назначить сочетание клавиш для быстрого запуска макроса — за это отвечает кнопка Параметры в окне макроса выше:
При назначении клавиш имейте в виду, что это чувствительно к регистру и раскладке клавиатуры. Поэтому, если вы назначаете комбинацию, например Ctrl + Y, фактически в будущем вам придется убедиться, что русская раскладка активирована, а также нажать Shift, чтобы получить заглавную букву.
Для удобства вы можете добавить кнопку для нашего макроса на панель быстрого доступа в верхнем левом углу окна. Для этого выберите Файл — Параметры — Панель быстрого доступа (Файл — Параметры — Настроить панель быстрого доступа), затем в раскрывающемся списке вверху окна выберите параметр Макрос. Затем наш макрос FormulasToValues можно разместить на панели с помощью кнопки Добавить и выбрать для него значок с помощью кнопки Изменить):
Добавляем в надстройку функции
В дополнение к макропроцедурам существуют также макрофункции или, как их еще называют, UDF (функция, определяемая пользователем). Создадим в нашем аддоне отдельный модуль (команда меню Insert — Module) и вставим туда код следующей функции:
Нетрудно понять, что эта функция нужна для извлечения НДС из суммы с учетом НДС. Конечно, это не бином Ньютона, но он послужит примером, демонстрирующим основные принципы.
Обратите внимание, что синтаксис функции отличается от процедуры:
- используется конструкция Function…. Конец функции вместо подпрограммы… Конец подпрограммы
- после имени функции в скобках указываются ее аргументы
- необходимые вычисления выполняются в теле функции, а затем результат присваивается переменной с именем функции
Также обратите внимание, что эта функция не требуется и не может быть выполнена, как предыдущая процедура макроса, через диалоговое окно «Макрос» и кнопку «Выполнить». Эту макрос-функцию следует использовать как стандартную функцию листа (СУММ, ЕСЛИ, ВПР…), например, просто введите любую ячейку, указав значение суммы с НДС в качестве аргумента:
. или доступ через стандартное диалоговое окно функции вставки (кнопка fx в строке формул), выбрав категорию, определяемую пользователем):
Единственный досадный момент — отсутствие привычного описания функции внизу окна. Чтобы добавить его, вам нужно будет сделать следующее:
- Откройте редактор Visual Basic с помощью сочетания клавиш Alt + F11
- Выберите надстройку на панели «Проект» и нажмите F2, чтобы открыть обозреватель объектов
- Выберите дополнительный проект из раскрывающегося списка вверху окна
- Щелкните отображаемую функцию правой кнопкой мыши и выберите «Свойства.
- Введите описание функции в поле Описание
- Сохраните файл надстройки и перезапустите Excel.
После перезагрузки функция должна отобразить введенное нами описание:
Первая программа на VBA Excel
Добавим в стандартный модуль шаблон процедуры — его начальную и конечную строки, между которыми мы напишем нашу первую программу (процедуру, подпрограмму).
Откройте стандартную форму, дважды щелкнув ее ссылку в проводнике. Поместите в него курсор и нажмите кнопку «Процедура…» на вкладке «Вставить» главного меню. Эта же ссылка будет доступна, когда вы нажмете вторую кнопку после значка Excel на панели инструментов.
В результате откроется окно для добавления шаблона процедуры (Sub).
Введите имя процедуры в поле «Имя»: «Primer1» или скопируйте его отсюда и вставьте в поле «Имя». Нажмите кнопку ОК, чтобы добавить в форму первую и последнюю строки процедуры.
Название процедуры может быть написано как латиницей, так и кириллицей, может содержать цифры и знак подчеркивания. Он должен начинаться с буквы и не содержать пробелов, вместо которых должен использоваться символ подчеркивания.
Вставьте следующую строку в шаблон процедуры: MsgBox «Hello».
Функция MsgBox отображает информационное сообщение с указанным текстом. В нашем примере это «Привет».
Убедитесь, что курсор находится внутри процедуры, и выполните ее, нажав клавишу «F5». Кроме того, вы можете запустить процедуру, щелкнув треугольник (на изображении под пунктом меню «Отладка») или кнопку «Запустить Sub / UserForm» на вкладке «Выполнить» главного меню редактора Excel VBA.
Если вы видели сообщение, подобное изображенному на картинке, поздравляем — вы написали свою первую программу!
Работа с переменными
Чтобы использовать переменные в процедуре, они должны быть объявлены с помощью ключевого слова «Dim». Если вы не укажете типы данных при объявлении переменных, они могут принимать любое значение, доступное в VBA Excel. Комментарии в тексте процедуры начинаются с «’» (апостроф).
Пример 2
Присвоение числовых значений переменным:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Public Sub Primer2 () ‘Объявляет переменные x, y, z Dim x, y, z’ Присваивает значение переменной xx = 25 ‘Присваивает значение переменной yy = 35’ Присваивает сумму ‘значений переменных x и yz = x + y ‘Вывод информационного сообщения’ со значением переменной z MsgBox z End Sub |
Пример 3
Присваивание строковых значений переменным:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Public Sub Primer3 () ‘Объявить переменные x, y, z Dim x, y, z’ Назначить строку переменной xx = «Good» ‘Назначить строку переменной yy = «day!» ‘Присвойте переменной z строку’, состоящую из строк x и y ‘с пробелом между ними z = x & «» & y’ Отображение информационного сообщения ‘со значением переменной z MsgBox z End Sub |
Скопируйте примеры процедур в стандартную форму и запустите их.
Запись макросов макрорекордером
Регистратор макросов — это небольшая программа, встроенная в Excel, которая переводит любое действие пользователя на язык программирования VBA и записывает полученную команду в программный модуль. Если мы включим регистратор макросов для записи, а затем начнем создавать наш еженедельный отчет, регистратор макросов начнет записывать команды после каждого нашего действия, и в результате мы получим макрос, который создает отчет, как если бы он был написан программист. Этот метод создания макросов не требует от пользователя знаний программирования и VBA и позволяет использовать макросы как своего рода аналог видеозаписи: включить запись, выполнить операцию, перемотать ленту и снова начать выполнять те же действия. Конечно, у этого метода есть свои плюсы и минусы:
- Регистратор макросов записывает только действия, выполняемые в окне Microsoft Excel. Как только вы закроете Excel или переключитесь на другую программу, запись остановится.
- Средство записи макросов может записывать только те действия, для которых в Excel есть команды меню или кнопки. Программист может написать макрос, который делает то, что Excel никогда не мог делать (например, сортировать по цвету или что-то подобное).
- Если вы допустили ошибку при записи макроса с помощью средства записи макросов, ошибка будет записана в журнал. Однако вы можете безопасно нажать кнопку, чтобы отменить последнее действие (Отменить): во время записи макроса с помощью средства записи макросов он не только возвращает вас в предыдущее состояние, но и стирает последнюю команду, записанную в VBA.
Чтобы включить регистрацию, вам необходимо:
- в Excel 2003 и более ранних версиях — выберите в меню Сервис — Макрос — Записать новый макрос
- в Excel 2007 и более поздних версиях нажмите кнопку «Запись макроса» на вкладке «Разработчик
Затем необходимо настроить параметры записываемого макроса в окне «Запись макроса:
- Имя макроса: Подойдет любое русское или английское имя. Имя должно начинаться с буквы и не содержать пробелов и знаков препинания.
- Сочетание клавиш: затем будет использоваться для быстрого запуска макроса. Если вы забыли комбинацию или не вводите ее вообще, макрос можно запустить через меню «Инструменты» — «Макрос» — «Макрос» — «Выполнить», с помощью кнопки «Макрос» на вкладке «Разработчик» или путем нажатия клавиш ALT + F8.
- Сохранить в… — здесь вы можете указать место, где будет сохранен текст макроса, например, набор команд VBA, составляющих макрос.:
- Эта книга: макрос сохраняется в модуле текущей книги и в результате будет запускаться только тогда, когда эта книга открыта в Excel
- Новая книга — макрос сохраняется в шаблоне, на основе которого создается любая новая пустая книга в Excel, т.е макрос будет содержаться во всех новых книгах, созданных на этом компьютере с текущего времени
- Личная книга макросов — это специальная книга Excel с именем Personal.xls, которая используется в качестве хранилища макросов. Все макросы Personal.xls загружаются в память при запуске Excel и могут быть запущены в любое время и в любой книге.
После того, как вы начнете запись и выполните действия, которые хотите записать, вы можете остановить запись с помощью команды «Остановить запись).
Создание кнопки для запуска макросов
Чтобы не запоминать сочетание клавиш для запуска макроса, лучше создать кнопку и назначить ей нужный макрос. Кнопка бывает разных типов:
Кнопка панели инструментов в Excel 2003 и более ранних версиях
Откройте меню Инструменты — Настройка и перейдите на вкладку Команды. В категории «Макро» легко найти забавного желтого «колобка» — кнопку Custom):
Перетащите его на панель инструментов и затем щелкните по нему правой кнопкой мыши. В контекстном меню вы можете назначить макрос кнопке, выбрать другой значок и имя:
Кнопка на панели быстрого доступа в Excel 2007 и более поздних версиях
Щелкните правой кнопкой мыши панель быстрого доступа в верхнем левом углу окна Excel и выберите «Настроить панель быстрого доступа):
Затем в открывшемся окне выберите категорию макросов и с помощью кнопки Добавить перенесите выбранный макрос в правую половину окна, например, на панель быстрого доступа:
Пуговица на листе
Этот способ подходит для любой версии Excel. Мы добавим кнопку запуска макроса прямо на рабочий лист в виде графического объекта. Из-за этого:
- В Excel 2003 и более ранних версиях: откройте панель инструментов «Формы» из меню «Вид» — «Панели инструментов» — «Формы
- В Excel 2007 и более поздних версиях откройте раскрывающийся список Вставка на вкладке Разработчик
Выберите объект Button):
Затем нарисуйте кнопку на листе, удерживая левую кнопку мыши. Автоматически появится окно, в котором нужно выбрать макрос, который должен запускаться при нажатии на нарисованную кнопку.