Расширение для vba excel

Надстройки 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:» введите пароль повторено и нажмите на кнопку ОК.

Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Еще…Меньше

Пакет анализа / Пакет анализа — VBA

Используйте надстройку «Пакет анализа» для сложного и статистического анализа, например регрессий, гистограмм, выборок и тестов z-Test. Кроме того, существуют специальные функции VBA, доступные для использования с надстройкой «Пакет анализа».


Справка надстроек «Пакет анализа» и «Пакет анализа — VBA»

Инструменты для евро

Надстройка Excel «Инструменты для евро» предназначена для работы с евро и национальными денежными единицами стран-участниц Европейского союза (ЕС), которые перешли на евро.


Справка надстройки «Инструменты для евро»

Надстройка Office для Microsoft Dynamics AX

Эта надстройка используется для импорта данных в Microsoft Dynamics AX или экспорта данных из Microsoft Dynamics AX в книгу Excel, динамически связанную с таблицами в Microsoft Dynamics AX. Можно также создать шаблоны Excel, чтобы поделиться с коллегами.


Справка надстройки для Microsoft Dynamics AX

Power Map

Power Map — инструмент для трехмерной (3-D) визуализации данных, который позволяет взглянуть на информацию по-новому. Вы можете получить результаты, которые не были доступны при использовании традиционных двухмерных (2-D) таблиц и диаграмм.


Справка надстройки Power Map

Power Pivot

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


Справка надстройки Power Pivot

Power Query

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


Сведения о Power Query в Excel

Power View

Power View — это интерактивный инструмент для изучения, визуализации и представления данных, который поддерживает интуитивно понятные функции формирования отчетов.


Справка надстройки Power View

Средство обновления отчетов QuickBooks

Используйте эту надстройку для обновления сохраненных отчетов QuickBooks при работе в Excel.


Справка средства обновления отчетов QuickBooks

Поиск решения

«Поиск решения» — это надстройка Excel, в которой можно выполнять анализ «что если». Используйте надстройку «Поиск решения», когда нужно найти оптимальное значение (максимальное или минимальное) для формулы в одной ячейке (так называемой ячейке целевой функции) с учетом ограничений или пределов для значений других ячеек с формулами на листе.


Справка надстройки «Поиск решения»

Средство диагностики электронных таблиц

Используйте надстройку «Средство диагностики электронных таблиц» для сравнения и анализа книг, отдельных листов, ячеек и других элементов.


Справка надстройки «Средство диагностики электронных таблиц»

Надстройка для Team Foundation (TFS)

Используйте надстройку для Team Foundation, чтобы добавлять и изменять рабочие элементы Team Foundation в Excel.


Справка надстройки для Team Foundation

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

Предыстория

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

В то время, у нас, как у разработчиков, было два способа «расширить» Excel под нетиповые задачи:

  • VBA (Visual Basic for Applications);
  • VSTO (Visual Studio Tools for Office).

Думаю, всем разработчикам надстроек для Excel хорошо известны преимущества и недостатки обоих подходов. Большим преимуществом и того, и другого является очень богатое API, позволяющее автоматизировать практически любые задачи. К недостаткам же стоит отнести сложности в установке подобных расширений. Особенно это касается надстроек на базе VSTO, где, зачастую, для инсталляции требуются административные права, получение которых может быть проблематичным для конечных пользователей.

По ряду причин, обсуждение которых выходит за рамки данной статьи, я выбрал для себя вариант с VSTO. Так родилась наша первая надстройка для Microsoft Excel — XLTools. В первую версию продукта вошли инструменты, позволяющие:

  • производить очистку данных в ячейках Excel (удалять лишние пробелы и непечатные символы, приводить регистр к единому виду, и т.д.);
  • преобразовывать таблицы из «двумерного вида» в «плоский» (unpivot);
  • сравнивать данные в столбцах;
  • инструмент для автоматизации всех вышеперечисленных действий.

Появление Office Store

Буквально через год после выхода в свет первой версии надстройки XLTools, мы узнали, что Microsoft запускает новую платформу для продвижения расширений под Office – Office Store. Моя первая мысль – а можем ли мы опубликовать там нашу новую надстройку XLTools? Может к сожалению, а может к счастью, но ответ на этот вопрос – НЕТ. Ни VBA, ни VSTO надстройки не могут быть опубликованы в Office Store. Но стоит ли расстраиваться? К счастью, и здесь ответ – НЕТ, не стоит. Далее я объясню – почему.

Новая концепция Add-Ins для Office

Что же такое Office Store и для чего он нам нужен? Если кратко, то это платформа, которая помогает пользователям и разработчикам искать, скачивать, продавать и покупать надстройки, расширяющие стандартный функционал Office-программ, будь то Excel, Word, Outlook, OneNote или PowerPoint. Если раньше конечным пользователям приходилось искать нужные им надстройки в поисковиках, то сейчас для этого создано единое место – Office Store, доступ к которому возможен прямо из интерфейса офисных программ. Пункт меню «Вставка» -> «Мои надстройки»:

Как мы уже выяснили, опубликовать надстройки, разработанные с использованием VBA или VSTO, в Office Store не получится. С выходом Office 365 и Office Store, Microsoft предложила нам новый способ разработки надстроек с использованием JavaScript API для Office, подразумевающий разработку приложений с использованием веб-технологий, таких как HTML5, CSS, JavaScript и Web Services.

Новый подход обладает как преимуществами, так и недостатками. К преимуществам можно отнести:

  • Простоту установки надстроек из Office Store;
  • Кроссплатформенность из коробки (Excel 2013/2016, Excel Online, Excel for iPad);
  • Возможность использования накопленного опыта веб-разработки (нет необходимости изучать новые технологии, если в команде уже есть веб-разработчики);
  • Готовая инфраструктура, позволяющая продавать надстройки по фиксированной цене или по подписке.

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

  • Менее богатое API по сравнению с VSTO и VBA (надеюсь, эта проблема будет становиться все менее и менее актуальной с выходом новых версий API).

Разработка надстроек для Excel «по новым правилам»

Итак, с чего же начать, если мы хотим идти в ногу со временем и не упустить новую волну приложений для Office?

Есть два варианта. На текущий момент, разрабатывать приложения на базе JavaScript API мы можем в:

  • Napa – легковесная веб-версия среды разработки для быстрого старта. Будет полезна разработчикам, у которых нет Visual Studio, или тем, кто хочет разрабатывать под операционной системой, отличной от Windows;
  • Visual Studio, начиная с версии 2012, с установленным пакетом Office Developer Tools – более мощная и функциональная среда разработки. Те, кто раньше разрабатывал под VSTO, могут сразу начинать с этого варианта, т.к. Visual Studio у них уже есть.

В данной статье мы рассмотрим разработку с использованием Visual Studio, т.к. сам я использую именно ее. Если Вам интересно попробовать Napa, то ознакомиться с этим инструментом и начать работу с ним можно здесь.

Перед началом разработки стоит также обратить внимание на пару существенных отличий VBA/VSTO надстроек от надстроек для Office Store:

  • Первое отличие заключается в том, что, разрабатывая надстройки на VBA или VSTO, мы могли создавать так называемые «пакетные» продукты, в состав которых входил целый ряд функций. XLTools является отличным примером – надстройка включает в себя множество опций для работы с ячейками, таблицами, столбцами, и т.д. При разработке надстроек для Office Store о таком подходе придется забыть. Планируя разработку, мы должны задуматься над тем, какие именно законченные, изолированные друг от друга функции мы хотим предоставить конечным пользователям. В случае с XLTools, те функции, которые изначально были реализованы в одной надстройке, сейчас представлены пятью отдельными приложениями в Office Store. Такой подход позволяет сделать решения более узконаправленными и повысить количество скачиваний надстроек целевыми пользователями;
  • Второе отличие заключается в разнице между JavaScript API и VSTO/VBA API. Здесь стоит детально изучить возможности, предоставляемые JavaScript API. Для этого советую воспользоваться приложениями API Tutorial (Task Pane) и API Tutorial (Content) от Microsoft.

Разработка надстройки для Excel c использованием Visual Studio и JavaScript API

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

Сам проект состоит из файла-манифеста и веб-сайта. Файл манифеста выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="TaskPaneApp">
  <Id>11111111-1111-1111-1111-111111111111</Id>
  <Version>1.0.1</Version>
  <ProviderName>WavePoint Co. Ltd.</ProviderName>
  <DefaultLocale>en-US</DefaultLocale>
  <DisplayName DefaultValue="XLTools.net Data Cleaning for Excel" />
  <Description DefaultValue=" Clean bulk data fast: remove extra spaces, change text case, convert text format to numbers, etc."/>
  <IconUrl DefaultValue="~remoteAppUrl/App/DataCleansing/Images/Logo32.png"></IconUrl>
  <SupportUrl DefaultValue="http://xltools.net/excel-apps/data-cleaning-app/"></SupportUrl>
  <Capabilities>
    <Capability Name="Workbook" />
  </Capabilities>
  <DefaultSettings>
    <SourceLocation DefaultValue="~remoteAppUrl/App/DataCleansing/Home.html" />
  </DefaultSettings>
  <Permissions>ReadWriteDocument</Permissions>
</OfficeApp>

Основное, что нужно отметить в этом файле:

  • Id – должен быть уникальным для каждого приложения;
  • Version – должна совпадать с версией, указываемой при публикации надстройки через Seller Dashboard (личный кабинет вендора/разработчика, через который осуществляется все управление надстройками, публикуемыми в Office Store);
  • IconUrl и SupportUrl – ссылки должны быть работающими и указывать на расположение картинки-логотипа и страницы с описанием функционала надстройки. В случае, если ссылки будут указаны неверно, манифест не пройдет проверку при публикации через Seller Dashboard;
  • Permissions – определяет уровень доступа надстройки к данным документа. Может принимать такие значения как Restricted, Read document, Read all document, Write document, Read write document;
  • SourceLocation – путь к «домашней» странице приложения на веб-сайте.

Веб-сайт состоит из минимального набора HTML, JavaScript и CSS файлов, необходимых для работы приложения, и по умолчанию предоставляет базовый UI, на основе которого мы можем строить UI для нового решения. Стоит отметить, что одним из требований к сайту является работа по HTTPS. Это означает, что в случае публикации сайта на собственных серверах или на собственном домене, Вам потребуется SSL сертификат. В случае, если Вы планируете использовать, к примеру, Azure Website, этой проблемы можно избежать, т.к. все сайты, развернутые на поддомене azurewebsites.net, по умолчанию доступны как по протоколу HTTP, так и протоколу HTTPS.

Для взаимодействия с данными Excel в JavaScript API предусмотрен стандартный набор методов. Приведу примеры использования лишь некоторых, из числа тех, которые мы использовали при разработке надстройки «XLTools.net Очистка данных»:

  • Добавление «привязки» к выбранному пользователем диапазону ячеек в Excel для дальнейшей работы с ними:

Office.context.document.bindings.addFromPromptAsync(Office.BindingType.Matrix, {
            id: "RangeToClean"
        }, function (asyncResult) {
            if (asyncResult.status == "failed") {
                    // Some specific code here
            }
            else {
                    // Some specific code here
            }
        });

  • Получение данных из диапазона ячеек с использованием ранее созданной «привязки»:

Office.select("bindings#RangeToClean", onBindingNotFound).getDataAsync(
            {},
            doDataCleaning
        );

  • Обновление данных в диапазоне ячеек с использованием ранее созданной «привязки»:

Office.select("bindings#RangeToClean").setDataAsync(range,function (asyncResult) {
            if (asyncResult.status == "failed") {
                    // Some specific code here
            }
            else {
                app.showNotification(UIText.ExecutedSuccessfully, '', 'success');
            }
        }).

Все методы JavaScript API хорошо документированы, их подробное описание можно посмотреть на сайте MSDN.

В зависимости от сценария, обработка данных может происходить как непосредственно на клиенте, т.е. в JavaScript-коде, так и на сервере. Для обработки данных на сервере можно добавить нужные сервисы прямо на сайт, к примеру, с использованием Web API. Общение клиента (надстройки) с веб-сервисами происходит так же, как мы привыкли это делать на любом другом сайте – при помощи AJAX-запросов. Единственное, что нужно учитывать – если Вы планируете использовать сторонние сервисы, расположенные на чужих доменах, то непременно столкнетесь с проблемой same-origin policy.

Публикация надстройки в Office Store

Для публикации надстройки в Office Store Вам необходимо зарегистрироваться на сайте Microsoft Seller Dashboard. После регистрации Вы получите доступ к личному кабинету, где сможете загрузить манифест Вашего приложения и заполнить всю необходимую информацию о нем. Исходя из личного опыта, могу сказать, что проверка приложения после отправки на утверждение занимает обычно от одного до трех рабочих дней. После проверки приложения сотрудниками Microsoft и его одобрения, оно становится доступно для скачивания миллионам пользователей по всему миру через Office Store:

Выводы

В заключение стоит сказать, что надстройки XLTools являются отличным примером того, как можно трансформировать существующие решения на базе технологий VBA/VSTO в кроссплатформенные решения для Office 365. В нашем случае, мы смогли перенести в Office Store добрую половину функций из Desktop-версии XLTools, реализовав шесть отдельных приложений.

Все они в настоящий момент доступны для скачивания через Office Store:

  • XLTools.net SQL запросы — выполнение SQL запросов к данным в таблицах Excel;
  • XLTools.net CSV Export for Excel — позволяет сохранить таблицу в Excel, как CSV файл с указанием нужного разделителя: запятая, точка с запятой или tab;
  • XLTools.net Очистка данных — очистка массива данных: удаление пробелов, изменение регистра текста, перевод текста в числа, т.д.;
  • XLTools.net Unpivot Table for Excel — помогает пользователям Excel трансформировать сложные двумерные таблицы в плоский вид;
  • XLTools.net Отчёты SendGrid — выгрузка отчетов о доставке из аккаунта SendGrid в Excel;
  • XLTools.net Columns Match — сравнение столбцов, поиск столбцов с одинаковыми данными, расчет процента соответствия данных в столбцах.

Так же хотелось бы отметить, что помимо привычных сценариев, с появлением Office Store и Office 365, у нас, как у разработчиков, появились новые возможности по разработке расширений с использованием Office 365 API, позволяющего получить доступ к данным таких сервисов как Mails, Calendars, SharePoint Online, OneDrive for Business и т.д. Кто знает, что мы сможем построить завтра с использованием этих возможностей. Время покажет!


Об авторе

Петр Ляпин -Технический директор ООО «ВейвПоинт»

Более 10 лет опыта внедрения проектов по автоматизации
бизнес-процессов. Работал со множеством российских и
зарубежных компаний. Основатель проекта XLTools.net.

Даже если вы не умеете программировать, то существует множество мест (книги, сайты, форумы), где можно найти готовый код макросов на 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
  • Что такое Личная Книга Макросов и как её использовать

Beta Version Obs:

First Make a backup for test

Some times Excel hides the sheets. For fix that, just go to view menu and unhidden than.

Last Features

— Rebuild Treeview

— Click on the Macro List to Navigate in the Code

— Fix Goto definition on Hover

— Add Button for open Ms Office Applications

— Reduce extension size in 63%

— Add New Annotations for new features and make code more readable

— Now with: Immediate Window Simulate in VSCode Output Channel Xdebug

— Improve Load Macros from VSCode

— Add export files to Excel with Lines Numbers Tagged

— Add Change Formatter tab size

See CHANGELOG

Next Features

  • Code Explorer
  • Implement the TDD like PHPUnit
  • Debug

Support XVBA

If you find it useful, please consider supporting it for help me to create a FREE face-to-face SCHOOL
for programmers in the small town of Vargem Bonita Brazil and create more tools and improve the Youtube channel

For beginners it is difficult to learn programming through tutorials

  • Become a Sponsor join the growing group of generous backers

The list below is some off new features vba language will have with XVBA

  • 1 Edit VBA from Excel And Access files in VSCode www.xvba.dev
  • 2 *Namespace (Organize files in folders)
  • 3 Live Server (With error log)
  • 4 Run Macros from VSCode TreeView (With error log)
  • 5 Auto Complete (Language Serve, in progress)
  • 6 Syntax Highlighting
  • 7 Snippets (starts with x-)
  • 8 Auto Indentation Rules
  • 9 Create Your own package and share in www.xvba.dev
  • 10 Stop the Live server and load VBA files to Excel Manually
  • 11 XVBA-CLI Command Line Interface for XVBA VSCode extension (@localsmart/xvba-cli)
  • 12 Code Formatter — Got to settings search for formatter and set to local-smart.excel-live-server
  • 13 Create Custom Ribbons Menus with Custom Images — See example
  • 14 Add Hover functionality
  • 15 Add Go to Definition (Hold Ctr and Click on function/sub/param)
  • 16 Add Build and Production functionality (Files on folder xvba_unit_test will export to Excel/Access just on Production Mode )
  • 17 Immediate Window Simulate in VSCode Output Channel (Use Xdebug package) Xdebug
  • 18 Add export files to Excel with Line Numbers Tagged
  • 19 Create type definition files in «vb» for auto-complete and share in www.xvba.dev

System requirements:

  • This extension was tested on Windows 10 and Office 2019
  • This extension was not tested on Mac or Virtual Machines
  • @localsmart/xvba-cli works on nodejs 12.18.4

Youtube

Youtube Chanel For Tutorials (Click Here)

  • How to install — First Steps
  • Namespace — Put File in Sub-folders
  • Create Custom Ribbon Menu
  • Use Production Mode or Build Mode
  • How to Formatter Code With XVBA
  • How to use Git With VBA
  • Create Comment Block for VBA with XVBA
  • Create Type Definition Files
  • How to install node and use xvba-cli
  • Use SQLite With VBA
  • VBA Tutorials

In time, more Videos will came for Javascript/Typescript/React/Angular..

  • Xvba Repository : www.xvba.dev
  • Xvba-Cli : @localsmart/xvba-cli

Obs: The first comment block in the file is for modules/class namespace

'/*
'
'Comment block Example 
'
'*/
Public Sub main()
 
End Sub
  • For use excel Objects auto-complete install the package excel-types with @localsmart/xvba-cli
    See excel-types package on github

Contributing

Please contributions are welcomed and appreciated.

  • See excel-types
  • In Time all code will be free

All feedback are welcome.

  • Mail : alberto.aeraph@gmail.com
  • WhatsApp: +55 31 9 9229 5626
  • Also please write a review, star me on GitHub, and follow me on github
  • Github account: Aeraphe

Installation

(Save your work and create a copy, before setting up the server)

  • First, set your excel security to run macros on open

Set Excel Run Macros Config First Step

Set Excel Run Macros Config Second Step

  • Second, click in the Bootstrap icon on XVBA (TreeView)

Init Config

  • This command will create a user config file (config.json)
    In this file you set the name of your excel file (xlsm,xlsb or xlam) and
    the project root folder (Where your vba file will save)
{
  "app_name": "XVBA",
  "description": "",
  "author": "",
  "email": "",
  "create_ate": "",
  "excel_file": "index.xlsb",
  "vba_folder": "vba-files",
  "xvba_packages": [],
  "xvba_dev_packages": [],
}

Obs: vba_folder path are relative to workspace and can’t accept absolute path like : «c:xxxx»

  • Now Import VBA files, click in the import icon on XVBA (TreeView) (if excel file has vba code)

Imp VBA Files

XVBA Live Server

  • Click on Button to run XVBA Live Server (For edit files in VSCode and auto update Excel file)
  • If you don’t want to use Live Server just click on button «Load VBA on Excel» to save your code changes on Excel when you want.

Imp VBA Files

Use Git to track changes on your code

  • Go to vscode terminal and type de command: git init (Press enter)
  • See on: https://git-scm.com/

Git Init

Feature List

Import excel VBA code to files (With error log)

  • XVBA will import and create files for edit in VSCode.
    Obs: XVBA only import modules/class’s/forms. Code inside sheets will not import
    Obs: modules name can not have accentuation

*Namespace

  • Define the folder where your vba file (Class, Module,Form) will live
  • For that, use the tag «namespace» no vba files like:

‘namespace=rootfolder/folder/subfolder

  • You can use namespace snippet

Type Snippets

  • If you save VBA files changes in VSCode, it will automatically update your Excel file (like hot reload)

Obs: Import vba files button will stop Live Server

Code Navigate in TreeView and Open Office Application Button

  • Right click on macros in treeview go to code

Code Navigate

Run Macros from VSCode TreeView (With error log)

  • Right click on macros on «LIST VBA MACROS» TreeView and select the option run
  • The Macro will run on excel file
    Obs: Macros that receive params can not be run direct . Create a test file for that

Run Macro

  • A Log file «excel_exec.log» wil create on workspace. Where you can see the
    success or error on run Macro

  • To see Errors on VSCode, use On Error Resume Next on the first line of the VBA code
    Set the error source name Err.Source =»func»

    Function func()
    
       ' If an error occurs, pass error to VSCode
       On Error Resume Next    ' Defer error handling.
       'Set Error Source
       Err.Source="func"
    
    End Function
    

Auto Complete

  • Use the auto-complete code by a Language Server (not snippets)

Auto Complete

Syntax Highlighting

  • This package provides syntax highlighting VBA.

Snippets

  • All xvba snippets starts with x-

Example (Block Comment): x-blc

Dim declarations

Type Snippets

Sub/function

Sub Snippets

Module/Class/Form Files

Module/Class/Form Files

  • if/else
  • for/while
  • case
  • etc…

Auto Indentation Rules

  • VBScript by Darfka (Auto Indentation Rules)

  • Set *namespace for all your files to (sub-folder = your package name)

'namespace=xvba_modules/sub-folder
  • Just commit your changes and push to git repository

git push

Stop the Live Server and load VBA files to Excel Manually

Load VBA Manually 2 Excel

XVBA-CLI Command Line Interface for XVBA VSCode extension

  • Add third packages to your project with command line interface
  • Create Your own package and share xvba.dev
  • Type on terminal and press enter for install the xvba-cli Last Version
 npm i @localsmart/xvba-cli@latest --save-dev

Install Packages

See

XVBA-CLI

Code formatter

  • Code formatter Got to settings search for formatter and set to local-smart.excel-live-server
    For format code short keys (alt+shift + f)
  • Immediate Window Simulate in VSCode Output Channel (Use Xdebug package) Xdebug

VBA immediate Window

  • On Error Handling :
    • To prevent error-handling code from running when no error has occurred, place an Exit Sub, Exit Function, or Exit Property
      statement immediately before the error-handling routine, as in the following fragment:

Add export files to Excel with Line Numbers Tagged

Export Code With Lines To Excel

Code Annotations for new features and make code more readable:

  • @ignore-comment (Ignore Comment to show on completion/hover functionality)
  • @module-comment (Define the comment block for module «.bas» and «.frm» files)
  • @class-comment (Define the comment block for module «.cls’ files)

Other Stuffs:)

Problems with file encoding

  • If you are having problems with some especial characters you have to
    change the default encode utf8 in vscode to windows1252 in settings.
    VBA files a save in windows1252 encoding

  • For that just pres (crtl + ,) and change the settings to:

    • «files.encoding»: «windows1252»
    • «files.autoGuessEncoding»:true

This package is built with this plugins:

  • VBScript by Darfka (Auto Indentation Rules)
  • luggage66/vscode-vbscript (Syntaxe Highlighting)

Versions Updates

  • Move to CHANGELOG File

Bug Fix

  • Move to CHANGELOG File

Понравилась статья? Поделить с друзьями:
  • Расширение для microsoft word pdf
  • Расширение для microsoft office word
  • Расширение asd в word открыть
  • Расчитать сумму в excel
  • Расчитать весь столбец в excel