Как встроить vba в excel

Microsoft Office Professional Edition 2003 Excel 2010 Еще…Меньше

Аннотация

При автоматизации Office продукта из Visual Basic может быть полезно переместить часть кода в модуль Microsoft Visual Basic для приложений (VBA), который может запускаться в пространстве процессов сервера. Это может повысить общую скорость выполнения приложения и решить проблемы, если сервер выполняет действие только при выполнении вызова.

В этой статье показано, как динамически добавить модуль VBA в запущенное приложение Office из Visual Basic, а затем вызвать макрос для заполнения активного электронного таблицы.

Дополнительная информация

В следующем примере показано, как вставить модуль кода в Microsoft Excel, но для Word и PowerPoint можно использовать один и тот же модуль VBA.

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

Начиная с Microsoft Office XP, пользователь должен предоставить доступ к объектной модели VBA, чтобы любой код автоматизации, написанный для управления VBA, работал. Это новая функция безопасности с Office XP. Дополнительные сведения см. в следующей статье базы знаний:

282830 Программный доступ к Office XP VBA Project отклонен

Шаги по построению примера

  1. Сначала создайте новый текстовый файл с именем KbTest.bas (без .txt расширения). Это модуль кода, который мы вставляем в Excel во время запуска.

  2. В текстовом файле добавьте следующие строки кода:

       Attribute VB_Name = "KbTest"

    ' Your Microsoft Visual Basic for Applications macro function takes 1
    ' parameter, the sheet object that you are going to fill.

    Public Sub DoKbTest(oSheetToFill As Object)
    Dim i As Integer, j As Integer
    Dim sMsg As String
    For i = 1 To 100
    For j = 1 To 10

    sMsg = "Cell(" & Str(i) & "," & Str(j) & ")"
    oSheetToFill.Cells(i, j).Value = sMsg
    Next j
    Next i
    End Sub

  3. Сохраните текстовый файл в каталоге C:KbTest.bas, а затем закроем его.

  4. Начните Visual Basic и создайте стандартный проект. По умолчанию создается форма 1.

  5. В меню Project щелкните Ссылки, а затем выберите версию библиотеки соответствующего типа, которая позволяет использовать ранняя привязка для Excel.

    Например, выберите один из следующих ок.

    • В Microsoft Office Excel 2007 выберите библиотеку 12.0.

    • В Microsoft Office Excel 2003 выберите библиотеку 11.0.

    • В Microsoft Excel 2002 выберите библиотеку 10.0.

    • В Microsoft Excel 2000 выберите библиотеку 9.0.

    • Для Microsoft Excel 97 выберите библиотеку 8.0.

  6. Добавьте кнопку в форму 1 и поместите следующий код в обработник события Click:

       Private Sub Command1_Click()
    Dim oXL As Excel.Application
    Dim oBook As Excel.Workbook
    Dim oSheet As Excel.Worksheet
    Dim i As Integer, j As Integer
    Dim sMsg As String

    ' Create a new instance of Excel and make it visible.
    Set oXL = CreateObject("Excel.Application")
    oXL.Visible = True

    ' Add a new workbook and set a reference to Sheet1.
    Set oBook = oXL.Workbooks.Add
    Set oSheet = oBook.Sheets(1)

    ' Demo standard Automation from out-of-process,
    ' this routine simply fills in values of cells.
    sMsg = "Fill the sheet from out-of-process"
    MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground

    For i = 1 To 100
    For j = 1 To 10
    sMsg = "Cell(" & Str(i) & "," & Str(j) & ")"
    oSheet.Cells(i, j).Value = sMsg
    Next j
    Next i

    ' You're done with the first test, now switch sheets
    ' and run the same routine via an inserted Microsoft Visual Basic
    ' for Applications macro.
    MsgBox "Done.", vbMsgBoxSetForeground
    Set oSheet = oBook.Sheets.Add
    oSheet.Activate

    sMsg = "Fill the sheet from in-process"
    MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground

    ' The Import method lets you add modules to VBA at
    ' run time. Change the file path to match the location
    ' of the text file you created in step 3.
    oXL.VBE.ActiveVBProject.VBComponents.Import "C:KbTest.bas"

    ' Now run the macro, passing oSheet as the first parameter
    oXL.Run "DoKbTest", oSheet

    ' You're done with the second test
    MsgBox "Done.", vbMsgBoxSetForeground

    ' Turn instance of Excel over to end user and release
    ' any outstanding object references.
    oXL.UserControl = True
    Set oSheet = Nothing
    Set oBook = Nothing
    Set oXL = Nothing

    End Sub

  7. Для Excel 2002 и для более поздних версий Excel необходимо включить доступ к проекту VBA. Это можно сделать одним из описанных ниже способов.

    • В Excel 2007 нажмите кнопку Microsoft Office и выберите Excel параметры. Щелкните Центр управления доверием и выберите центр управления Параметры. Нажмите кнопку Параметры, щелкните, чтобы выбрать поле Доверять доступу к объектной модели проекта VBA, а затем нажмите кнопку ОК два раза.

    • В Excel 2003 и более ранних версиях Excel пункт Макрос в меню Инструменты и нажмите кнопку Безопасность. В диалоговом окне Безопасность перейдите на вкладку Надежные источники и выберите Visual Basic Project доступ.

  8. Запустите Visual Basic проекта.

Ссылки

Дополнительные сведения об автоматизации Office от Visual Basic см. на сайте Office поддержки разработки по следующему адресу:

http://support.microsoft.com/ofd

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

Надстройки Excel – это прекрасная альтернатива создания макросов доступных для использования любых других файлов рабочих книг. Если Вам понравиться создавать свои надстройки и вы войдете во вкус, то это полезное и интересное занятие может еще для вас приносить неплохой доход. Надстройки можно публиковать и продавать в магазине Office Store. В данном примере мы покажем, как создать свою достройку с макросом, написанным на коде самого простого и весьма востребованного языка программирования VBA (Visual Basic for Applications).

Как сделать и установить надстройку в Excel

Чтобы создать, добавить и включить свою надстройку с макросом, следует:

  1. Создайте новую рабочую книгу: «ФАЙЛ»-«Создать»-«Пустая книга». Или нажмите комбинацию горячих клавиш CTRL+N.
  2. Создать файл XLA.

  3. Откройте редактор макросов: «РАЗРАБОТЧИК»-«Код»-«Visual Basic».
  4. Редактор Visual Basic.

  5. Вставьте новый модуль выбрав инструмент: «Insert»-«Module».
  6. Код макроса.

  7. В окне модуля введите свой код макроса. Возьмем простейший пример макроса:
  8. Sub MyMakros()
    Dim polzovatel As String
    Dim data_segodnya As Date
    polzovatel = Application.UserName
    data_segodnya = Now
    MsgBox "Макрос запустил пользователь: " & polzovatel & vbNewLine & data_segodnya
    End Sub

  9. Закройте окно редактора макросов и выберите инструмент: «ФАЙЛ»-«Сохранить как» (CTRL+S). В поле «Имя файла:» введите название для своей тестовой программы. А из выпадающего списка «Тип файла:» выберите значение «Надстройка Excel 97-2003» (*.xla). Автоматически откроеться папка для установки надстроек: C:Documents and SettingsUser_Name AppDataRoamingMicrosoftAddIns. И нажмите на кнопку «Сохранить».
  10. Сохранение совместимости.

  11. Перед тем как установить надстройку в Excel, закройте все открытые рабочие книги снова запустите программу Excel.
  12. Выберите инструмент: «ФАЙЛ»-«Параметры»-«Надстройки». Внизу из выпадающего списка «Управление:» укажите на опцию «Надстройки Excel» и нажмите на кнопку «Перейти».
  13. Параметры Excel.

  14. В появившемся диалоговом окне «Надстройки» нажмите на кнопку «Обзор», а после найдите и найдите свое название, на против него поставьте галочки и нажмите на кнопку «Ок». Если вы не находите названия нажмите на кнопку «Обзор», чтобы указать путь к вашему файлу с надстройкой.

Включить.

Надстройка VBA готова! Теперь во всех открытых рабочих книгах можно будет воспользоваться макросами из вашего *.xla файла. Чтобы убедиться в этом снова откройте редактор Visual Basic (ALT+F11).

Проверка.

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



Как удалить надстройку в Excel

Чтобы отключить вашу надстройку снова откройте окно «ФАЙЛ»-«Параметры»-«Надстройки»-«Перейти» и снимите соответственную галочку в появившемся диалоговом окне. Для полного удаления надстройки придется удалить ее файл *.xla из папки C:Documents and SettingsUser_Name AppDataRoamingMicrosoftAddIns.

Полезные советы по надстройкам

Внимание! В данном примере мы использовали формат рабочей книги для сохранения файла в формате «Надстройка 97-2003». Это позволяет использовать ее в разных версиях Excel. Например, файлы, сохраненные в формате *.xlam не может быть использована в версии 2007 и старше. Поэтому лучше воспользоваться старым форматом файлов надстройке *.xla.

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

Примечание. Если вы хотите защитить паролем доступ к своим исходным кодам макросов, тогда выберите инструмент в редакторе Visual Basic: «Tools»-«VBAProject Properties». На закладке «Protection» в поле ввода «Password:» введите пароль для защиты доступу к макросам проекта рабочей книги. В поле ввода «Confirm password:» введите пароль повторено и нажмите на кнопку ОК.

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

Файлы для скачивания:

Файл Описание Размер файла: Скачивания
Скачать этот файл (P_Macros_01.zip)Пример   14 Кб 2797

Рассмотрим два примера:

Ищем и используем команду
Ищем и используем функцию

1. Ищем и используем команду

Например, нам необходима команда, которая бы вставляла в выделенные ячейки цифру «1». Запускаем поисковик, набираем поисковую фразу, получаем результаты, начинаем просматривать, находим код примерно в таком виде:

Sub Вставка1()
    Dim q As Object
    On Error Resume Next
    Set q = Cells
    For Each q In Selection
        q = 1
    Next q
End Sub

Выделяем данный код (без нумерации строк, начиная со слова Sub) и нажимаем Ctrl+C. Переходим в свою рабочую книгу MS Excel и нажимаем сочетание клавиш Alt+F11, у вас откроется окно редактора VBA:

Как вставить готовый макрос в рабочую книгу?

В левом окне «Project — VBA Project» выбираем (щелкаем мышкой) нашу рабочую книгу, в которую необходимо вставить макрос, например, «VBAProject (Книга2)»:

Я не вижу окна «Project — VBA Project».

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_5.png

В пункте меню «Insert» выбираем «Module»:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_2.png

В левом окне «Project — VBA Project» у вас должна появиться новая папка «Modules» и в ней новый объект «Module1»:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_3.png

Переходим курсором в правое «Большое» поле для ввода и нажимаем Ctrl+V, скопированный макрос вставиться в модуль:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_4.png

У меня в коде «????????«

После чего закрываем редактор VBA и возвращаемся в рабочую книгу.

Если вы работаете в MS Excel 2007, 2010 или 2013, вам необходимо будет сохранить вашу рабочую книгу как «Книга Excel с поддержкой макросов (.xlsm)»:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_16.png

В MS Excel 2003 достаточно будет просто сохранить файл.

Чтобы выполнить скопированный в книгу макрос выделяем ячейки, в которые необходимо вставить «1», нажимаем в меню «Вид» кнопку «Макросы» и в выпавшем списке выбираем пункт «Макросы» или нажимаем сочетание клавиш Alt+F8:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_8.png

Откроется диалоговое окно «Макрос», в списке макросов выбираем свой и нажимаем кнопку «Выполнить»:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_9.png

Макрос выполнится — в выделенные ячейки вставиться «1»:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_20.png

Чтобы макрос можно было запускать без лишних телодвижений, читайте статьи «Как сделать кнопку для запуска своего макроса?» и «Как назначить макросу сочетание клавиш?».

Макросы в MS Excel можно вставлять в следующие места:

  • В Модуль, обычно вставляют код макросов, запуск которых будет производится по нажатию кнопки пользователем (как, например, в нашем случае) или код функций (формул);
  • В Рабочий лист, обычно вставляют код макросов, запуск которых должен происходить автоматически в зависимости от действий пользователя или изменения данных в листе (поменялись данный, макрос выполнился);
  • В Рабочую книгу, обычно вставляют код макросов, запуск которых должен происходить автоматически в зависимости от действий, производимых над книгой (файлом). Например, макрос, который запускается при открытии или закрытии книги, или при ее сохранении;
  • Так же макросы могут быть частью пользовательской формы.

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

Чтобы вставить код в Рабочий лист, в левом окне редактора VBA выберите соответствующий лист, щелкните по нему два раза левой кнопкой мышки, переместите курсор в правое поле ввода и вставьте код.

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_10.png

Для вставки кода в Книгу, выберите «ЭтаКнига»:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_17.png

Давайте потренируемся. Вставьте код опубликованный ниже в «Лист1».

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo a
    If Target = 2 Then
        VBA.MsgBox ("Ячейка " & Target.Address & " = 2")
    End If
a:
    Exit Sub
End Sub

Данный макрос выводит информационное сообщение если вы введете в любую ячейку листа «2».

Вернитесь в рабочую книгу, перейдите в «Лист1» и введите в ячейку «А1» цифру «2» и нажмите Enter, после чего у вас должно появиться следующее сообщение:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_11.png

Если вы видите это сообщение, то вы все сделали правильно. Если нет, то вы вставили код куда-то не туда, повторите попытку.

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

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_21.png

2. Ищем и используем функцию

Находим в интернете VBA код функции, которая подсчитывает, например, количество слов в ячейке:

Public Function КолСловВЯчейке(Ячейка As Range)
    Dim q As Variant
    Application.Volatile
    q = VBA.Split(Application.WorksheetFunction.Trim(Ячейка.Value), " ")
    КолСловВЯчейке = UBound(q) + 1
End Function

Копируем код, нажимаем сочетание клавиш Alt+F11, откроется редактор VBA:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_22.png

Добавляем новый модуль в свою книгу и в этот модуль вставляем скопированный код:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_23.png

Закрываем редактор VBA и переходим в свою рабочую книгу. Создаем новый лист (необязательно) в ячейку A1 вводим текст «мама мыла раму». Встаем в ячейку, в которой хотим получить результат (количество слов), в меню «Формулы» нажимаем кнопку «Вставить функцию»:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_12.png

В открывшемся окне «Вставка функции» в поле «Категория» выбираем «Определенные пользователем»

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_13.png

В списке доступных функций выбираем «КолСловВЯчейке», нажимаем «ОК»:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_14.png

Вводим необходимые аргументы и нажимаем «ОК»:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_15.png

Получаем результат:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_24.png

Важно:

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

Если при вставке макроса в модуль у вас вместо некоторого текста стоят красные знаки «????????«

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_6.png

Это значит, что у вас проблема с кодировкой, которая наблюдается с копированием Кириллического текста из некоторых браузеров. Чтобы победить эту проблему, попробуйте вставить скопированный код в пустой лист MS Excel, как «Текст в кодировке Unicode». Для этого перейдите в книгу MS Excel, выберите или создайте пустой лист, встаньте в ячейку «A1» и нажмите сочетания клавиш Ctrl+Alt+V. Должно будет появиться меню «Специальной вставки», выберите пункт «Текст в кодировке Unicode» и нажмите «OK».

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_7.png

Код должен будет вставиться в рабочий лист без знаков вопроса:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_18.png

После этого, еще раз скопируйте вставленный в лист код, и вставить его уже в модуль.

Если вы не видите в редакторе VBA окна «Project — VBA Project», перейдите во вкладку меню «View» и в списке выберите пункт «Project Explorer» или нажмите сочетание клавиш Ctrl+R:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_19.png

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

Даже если вы не умеете программировать, то существует множество мест (книги, сайты, форумы), где можно найти готовый код макросов на VBA для огромного количества типовых задач в Excel. По моему опыту, большинство пользователей рано или поздно собирают свою личную коллекцию макросов для автоматизации рутинных процессов, будь то перевод формул в значения, вывод суммы прописью или суммирования ячеек по цвету. И тут встает проблема — код макросов на Visual Basic нужно где-то хранить, чтобы потом использовать в работе.

Самый простой вариант — сохранять код макросов прямо в рабочем файле, зайдя в редактор Visual Basic с помощью сочетания клавиш Alt+F11 и добавив новый пустой модуль через меню Insert — Module:

Добавление модуля в книгу

При таком способе возникает, однако, несколько неудобств:

  • Если рабочих файлов много, а макрос нужен везде, как например макрос преобразования формул в значения, то и копировать код придется в каждую книгу.
  • Нужно не забыть сохранить файл в формате с поддержкой макросов (xlsm) или в формате двоичной книги (xlsb).
  • При открытии такого файла защита от макросов будет каждый раз выдавать предупреждение, которое нужно подтвердить (ну, или отключить защиту полностью, что может быть не всегда желательно).

Более изящным решением будет создание своей собственной надстройки (Excel Add-in) — отдельного файла особого формата (xlam), содержащего все ваши «любимые» макросы. Плюсы такого подхода:

  • Достаточно будет один раз подключить надстройку в Excel — и можно будет использовать её VBA процедуры и функции в любом файле на этом компьютере. Пересохранять ваши рабочие файлы в xlsm- и xlsb-форматы, таким образом, не потребуется, т.к. исходный код будет храниться не в них, а в файле надстройки.
  • Защита от макросов вас тоже беспокоить уже не будет, т.к. надстройки по определению входят в доверенные источники.
  • Можно сделать отдельную вкладку на ленте Excel с красивыми кнопками для запуска макросов надстройки.
  • Надстройка — это отдельный файл. Его легко переносить с компьютера на компьютер, делиться им с коллегами или даже продавать ;)

Давайте рассмотрим весь процесс создания своей собственной надстройки для Microsoft Excel по шагам.

Шаг 1. Создаем файл надстройки

Открываем Microsoft Excel с пустой книгой и сохраняем ее под любым подходящим именем (например MyExcelAddin) в формате надстройки с помощью команды Файл — Сохранить как или клавиши F12, указав тип файла Надстройка Excel (Excel Add-in):

Сохраняем файл в формате надстройки

Обратите внимание, что стандартно Excel хранит надстройки в папке C:UsersВаше_имяAppDataRoamingMicrosoftAddIns, но, в приниципе, можно указать любую другую удобную вам папку.

Шаг 2. Подключаем созданную надстройку

Теперь созданную нами на прошлом шаге надстройку MyExcelAddin надо подключить к Excel. Для этого идем в меню Файл — Параметры — Надстройки (File — Options — Add-Ins), жмем на кнопку Перейти (Go) в нижней части окна. В открывшемся окне жмем кнопку Обзор (Browse) и указываем положение нашего файла надстройки.

Если вы все сделали правильно, то наша MyExcelAddin должна появиться в списке доступных надстроек:

Список надстроек

Шаг 3. Добавляем в надстройку макросы

Наша надстройка подключена к Excel и успешно работает, но в ней нет пока ни одного макроса. Давайте её наполним. Для этого нужно открыть редактор Visual Basic сочетанием клавиш Alt+F11 или кнопкой Visual Basic на вкладке Разработчик (Developer). Если вкладки Разработчик не видно, то её можно отобразить через Файл — Параметры — Настройка ленты (File — Options — Customize Ribbon).

В левом верхнем углу редактора должно быть окно Project (если его не видно, то включите его через меню View — Project Explorer):

Project Explorer

В этом окне отображаются все открытые книги и запущенные надстройки Microsoft Excel, в том числе и наша VBAProject (MyExcelAddin.xlam) Выделите её мышью и добавьте в неё новый модуль через меню Insert — Module. В этом модуле мы и будем хранить VBA-код наших макросов надстройки.

Код можно либо набрать «с нуля» (если вы умеете программировать), либо скопировать откуда-нибудь уже готовый (что гораздо проще). Давайте, для пробы, введем в добавленный пустой модуль код простого, но полезного макроса:

Код макроса

После набора кода не забудьте нажать на кнопку сохранения (дискетку) в левом верхнем углу.

Наш макрос FormulasToValues, как легко сообразить, преобразует формулы в значения в выделенном предварительно диапазоне. Иногда такие макросы называют еще процедурами. Чтобы его запустить, нужно выделить ячейки с формулами и открыть специальное диалоговое окно Макросы с вкладки Разработчик (Developer — Macros) или сочетанием клавиш Alt+F8. Обычно в этом окне отображаются доступные макросы из всех открытых книг, но макросы надстроек здесь не видны. Несмотря на это, мы можем ввести имя нашей процедуры в поле Имя макроса (Macro name), а затем нажать кнопку Выполнить (Run) — и наш макрос заработает:

Здесь же можно назначить сочетание клавиш для быстрого запуска макроса — за это отвечает кнопка Параметры (Options) в предыдущем окне Макрос:

Назначаем сочетание клавиш макросу

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

Для удобства можно добавить и кнопку для нашего макроса на панель быстрого доступа в левом верхнем углу окна. Для этого выберите Файл — Параметры — Панель быстрого доступа (File — Options — Customize Quick Access Toolbar), а затем в выпадающем списке в верхней части окна опцию Макросы. После этого наш макрос FormulasToValues можно поместить на панель кнопкой Добавить (Add) и выбрать для него значок кнопкой Изменить (Edit):

Назначаем кнопку макросу на панели быстрого доступа

Шаг 4. Добавляем в надстройку функции

Кроме макросов-процедур, существуют еще и макросы-функции или как их еще называют UDF (User Defined Function = пользовательская функция). Давайте создадим в нашей надстройке отдельный модуль (команда меню Insert — Module) и вставим туда код такой функции:

Пользовательская функция

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

Заметьте, что синтаксис функции отличается от процедуры:

  • используется конструкция Function …. End Function вместо Sub … End Sub
  • после названия функции в скобках указываются её аргументы
  • в теле функции производятся необходимые вычисления и затем результат присваивается переменной с названием функции

Также обратите внимание, что эту функцию не нужно, да и невозможно запустить как предыдущий макрос-процедуру через диалоговое окно Макросы и кнопку Выполнить. Такую макрофункцию нужно использовать как стандартную функцию листа (СУММ, ЕСЛИ, ВПР…), т.е. просто ввести в любую ячейку, указав в качестве аргумента значение суммы с НДС:

Используем созданную UDF

… или ввести через стандартное диалоговое окно вставки функции (кнопка fx в строке формул), выбрав категорию Определенные пользователем (User Defined):

Выбираем пользовательскую функцию

Единственный неприятный момент здесь — это отсутствие привычного описания функции в нижней части окна. Чтобы его добавить придется проделать следующие действия:

  1. Откройте редактор Visual Basic сочетанием клавиш Alt+F11
  2. Выделите надстройку в панели Project и нажмите клавишу F2, чтобы открыть окно Object Browser
  3. Выберите в верхней части окна в выпадающем списке свой проект надстройки
  4. Щелкните по появившейся функции правой кнопкой мыши и выберите команду Properties.
  5. Введите описание функции в окно Description
  6. Сохраните файл надстройки и перезапустите Excel.

Добавляем свое описание для UDF

После перезапуска у функции должно отобразиться описание, которое мы ввели:

Описание функции

Шаг 5. Создаем вкладку надстройки в интерфейсе

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

Информация об отображаемых вкладках по умолчанию содержится внутри книги и должна быть оформлена в виде специального XML-кода. Проще всего писать и редактировать такой код с помощью специальных программ — XML-редакторов. Одна из самых удобных (и бесплатных) — это программа Максима Новикова Ribbon XML Editor.

Алгоритм работы с ней следующий:

  1. Закройте все окна Excel, чтобы не было конфликта файлов, когда мы будем редактировать XML-код надстройки.
  2. Запустите программу Ribbon XML Editor и откройте в ней наш файл MyExcelAddin.xlam
  3. При помощи кнопки tabs в левом верхнем углу добавьте заготовку кода для новой вкладки:

    Добавляем новую вкладку для надстройки

  4. В пустые кавычки нужно вписать id нашей вкладки и группы (любые уникальные идентификаторы), а в label — названия нашей вкладки и группы кнопок на ней:

    Добавляем id и названия

  5. При помощи кнопки button на панели слева добавляем заготовку кода для кнопки и дописываем к ней теги:

    Добавляем кнопку

    — label — это текст на кнопке
    — imageMso — это условное название изображения на кнопке. Я использовал иконку с красной кнопкой, которая имеет название AnimationCustomAddExitDialog. Названия всех доступных кнопок (а их несколько сотен!) можно найти на большом количестве сайтов в интернете, если искать по ключевым словам «imageMso». Для начала можно сходить сюда.
    onAction — это имя процедуры обратного вызова — специального короткого макроса, который будет запускать наш основной макрос FormulasToValues. Назвать эту процедуру можно как угодно. Мы добавим её чуть позже.

  6. Проверить правильность всего сделанного можно с помощью кнопки с зеленой галочкой сверху на панели инструментов. Там же рядом нажмите на кнопку с дискетой для сохранения всех изменений.
  7. Закрываем Ribbon XML Editor
  8. Открываем Excel, заходим в редактор Visual Basic и добавляем к нашему макросу процедуру обратного вызова KillFormulas, чтобы она запускала наш основной макрос замены формул на значения.

    Добавляем процедуру обратного вызова

  9. Сохраняем внесенные изменения и, вернувшись в Excel проверяем результат:

    Созданная вкладка для надстройки

Вот и всё — надстройка готова к использованию. Наполните её своими процедурами и функциями, добавьте красивые кнопки — и использовать макросы в работе станет намного проще.

Ссылки по теме

  • Что такое макросы, как их использовать в работе, где взять код макросов на Visual Basic.
  • Как сделать заставку при открытии книги в Excel
  • Что такое Личная Книга Макросов и как её использовать

Те, кто использует набор инструментов Microsoft office и часто использует расширенные функции, вероятно, будут использовать VBA. VBA (Visual Basic для приложений) — это название языка программирования в Excel. VBA легко понять, как писать строки или команды для выполнения функций или другого содержимого.

По умолчанию при установке полного пакета Office VBA устанавливается в приложениях Excel и Word. Однако многие люди в процессе установки Office предпочтут установить такие приложения, как Word, Excel и т. Д., Поэтому VBA будет скрыт. Итак, как установить VBA в Excel?

  1. Как взломать пароль VBA в Excel
  2. Как отправить электронное письмо из электронной таблицы Excel с помощью скрипта VBA
  3. 5 кошмаров для Excel и как это исправить

Шаг 1:

Сначала перейдите в Панель управления и нажмите «Программы».

Изображение 1 из Как установить VBA в Excel

Шаг 2:

В списке установленного программного обеспечения на вашем компьютере перейдите к установленному пакету Microsoft Office. Щелкните правой кнопкой мыши и выберите «Изменить».

Изображение 2 из Как установить VBA в Excel

Шаг 3:

Переключитесь на новый интерфейс и выберите «Добавить» или «Удалить элементы», затем нажмите «Продолжить», чтобы продолжить.

Изображение 3 из Как установить VBA в Excel

Шаг 4:

В следующем интерфейсе пользователи увидят полный набор приложений Office. Найдите раздел «Общие функции Office», щелкните значок плюса, чтобы развернуть список.

Найдите инструмент Visual Basic для приложений ниже. Если VBA не установлен, отобразится красная косая черта X. Щелкните инструмент и выберите «Запускать с моего компьютера».

Изображение 4 из Как установить VBA в Excel

Когда красная метка исчезнет в инструменте VBA, нажмите кнопку «Далее», чтобы продолжить.

Изображение 5 из Как установить VBA в Excel

Шаг 5:

Скоро в Office будет установлен инструмент VBA. Подождем завершения процесса установки.

Изображение 6 из Как установить VBA в Excel

В конце этого интерфейса нажмите кнопку «Закрыть», чтобы закрыть.

Изображение 7 из Как установить VBA в Excel

Шаг 6:

Вы перезапускаете Excel и щелкаете вкладку «Разработчик» на панели ленты, чтобы увидеть инструмент Visual Basic, отображаемый в левой части того же интерфейса.

Изображение 8 из Как установить VBA в Excel

Выше показано, как установить и открыть VBA в Excel. VBA также будет установлен в Word, PowerPoint, Outlook,. в пакете Office, так что вы можете следовать описанному выше методу, если не можете найти VBA.

Узнать больше:

  1. Способы скрыть данные в Excel
  2. Инструкция по созданию интерактивных диаграмм в Excel с функцией ИНДЕКС
  3. Как установить флажок в Word

Желаю всем успехов!

Понравилась статья? Поделить с друзьями:
  • Как встроить excel таблицу в word
  • Как встроить excel на сайт
  • Как встроенные функции влияют на организацию расчетов в ms excel поясните свой ответ
  • Как вставлять ячейки с фильтром в excel
  • Как вставлять ячейки между ячейками в excel