Надстройки для excel примеры

Предыстория

Все началось около четырех лет назад. Работая над очередным проектом по автоматизации бизнес-процессов для крупной российской сети розничной торговли, я заинтересовался разработкой надстроек для офисных приложений, в частности, для 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.

Знаете ли вы, что Microsoft Office, включая Excel и Word, поддерживает надстройки ? Надстройки для Excel могут помочь вам быстрее справляться со своими задачами, поскольку вам никогда не придется выходить из рабочей книги Excel.

Вот несколько из этих потрясающих инструментов, начиная с того, как вы можете их получить.

Поиск, установка и доступ к надстройкам

Microsoft Excel 2016 имеет удобный магазин, доступный как на Windows, так и на Mac. Открыв книгу Excel, выберите вкладку « Вставка » и нажмите « Сохранить» . Когда откроется Магазин надстроек Office, вы сможете просматривать по категориям или искать определенную надстройку. Вы также можете посетить Интернет-магазин Office и выбрать « Надстройки» в верхней части навигации.

Microsoft Office Store Excel Надстройки

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

Добавить Установить Excel Надстройки

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

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

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

10 экономящих время бизнес-надстроек

1. Электронная таблица123 Шаблон Vault

Если вы часто создаете документы в своей работе, использование шаблонов не только удобно, но и показывает последовательность. Надстройка Spreadsheet123 предлагает несколько категорий для начала работы, включая бюджеты, счета-фактуры, расписания, ресурсы, посещаемость и управление проектами. Вы также можете использовать окно поиска для определенного шаблона.

Электронная таблица надстроек Excel123

Выбрав любой из шаблонов, вы можете увидеть небольшой предварительный просмотр, типы файлов и ссылки на другие шаблоны в этой категории. Когда вы будете готовы, нажмите кнопку, и шаблон будет загружен с веб-сайта Spreadsheet123.

2. Галерея шаблонов Vertex42

Еще одна отличная надстройка для шаблонов — Галерея шаблонов Vertex42. Вы можете быстро найти варианты для счетов, инвентаря, финансов и управления проектами. Календари, планировщики и графики довольно полезны. Для получения образования ознакомьтесь с учебным планом, посещаемостью, планировщиком домашних заданий и шаблонами расписания занятий.

Шаблоны надстроек Excel Vertex42

Для конкретного шаблона , вставьте ключевое слово в удобное окно поиска. Выбрав шаблон, вы можете просмотреть краткое описание и доступные типы файлов. Затем просто нажмите кнопку, чтобы загрузить его с веб-сайта Vertext42.

3. Excel Colorizer

Для быстрого и простого добавления цвета в электронные таблицы Excel Colorizer Addin работает хорошо и облегчает чтение ваших данных. Вы выбираете цвета и рисунок, а надстройка делает все остальное.

Excel надстройка Excel Colorizer

Выберите из равномерного, горизонтального, вертикального или матричного. Выберите четыре разных цвета, выберите интерполяцию, цветовое пространство, а затем узор из чересстрочных или волн. Выделите области таблицы, к которой вы хотите применить это, и нажмите Colorize! чтобы это произошло.

4. Sorc’d Добавить фрагменты соответствующего содержимого

Если вы хотите добавить интернет-контент в свою таблицу, надстройка от Sorc’d — это удобный инструмент. Вы можете выполнить поиск или просто выбрать из длинного списка категорий, включая рекламу, электронную коммерцию, розничную торговлю и путешествия.

Надстройка для Excel Sorcd Snippets

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

5. Keluro Web Analytics [больше не доступно]

Если добавление Google Analytics в ваш документ — это данные, которые вам нужны, то надстройка Keluro Web Analytics идеальна. Аутентифицируйте свою учетную запись Google Analytics из надстройки, выберите свойства, которые будут отображаться, если у вас их несколько, и вы настроены.

Надстройка Excel Keluro Web Analytics

Вы можете выбрать из различных измерений и метрик, чтобы получить точные данные, которые вы хотите Варианты включают пользователя, сеанс, источники трафика, AdWords, отслеживание страниц, аудиторию и многое другое, каждый из которых также имеет подкатегорию. Нет более простого способа использовать Google Analytics на вашем сайте, чем с Keluro.

6. Выставление счетов PayPal [больше не доступно]

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

Excel-надстройка PayPal выставление счетов

Счет-фактура также содержит разделы с условиями и положениями, примечание для получателя и памятку для вашей собственной справки. Обратите внимание, что для этой надстройки требуется шаблон книги счетов-фактур PayPal Excel, и вы увидите эту инструкцию, как только откроете надстройку. Просто следуйте инструкциям на экране надстройки, чтобы загрузить книгу, и вы уже в пути.

7. Таймер активности [больше не доступен]

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

Таймер активности надстроек Excel

Имена действий будут перечислены со временем для каждой задачи после ее завершения. Кроме того, вы можете нажать кнопку Вставить данные , чтобы вставить информацию прямо в таблицу. Так что, если вам нужно поделиться временем отслеживания, это отличная функция.

8. Удобный калькулятор

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

Excel надстройка удобный калькулятор

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

9. Детектор узкого места

Для тех, кто создает, редактирует и поддерживает рабочие книги и электронные таблицы с огромными объемами данных, Bottleneck Detector действительно может помочь. Этот инструмент покажет вам, что замедляет работу вашей книги. После установки надстройки на ленте на вкладке « Главная » будет размещена кнопка, которую можно просто щелкнуть, чтобы открыть ее.

Встраиваемый в Excel детектор Bottlenec

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

10. QR4Office

Для добавления изящных QR-кодов в ваши электронные таблицы, QR4Office является отличным инструментом. Вы просто добавляете URL или текст, который хотите кодировать, а затем выбираете цвета для переднего плана и фона. Вы также можете настроить размер и увидеть хороший предварительный просмотр кода.

Надстройка Excel QR4Office

Если вы довольны QR-кодом, просто выберите ячейку в таблице и нажмите « Вставить» . QR-код появится сразу, и вы также можете скопировать или сохранить его вручную, если хотите. Это удобный инструмент, если ваш бизнес использует QR-коды.

5 удобных специфичных для компании надстроек

Для тех, кто использует определенные инструменты и компании, такие как Salesforce или SurveyMonkey, вот несколько дополнительных надстроек, которые могут оказаться полезными.

  1. SmartClient для Salesforce
  2. Verso Ticket Management для Excel

Удаление надстроек

Если вы хотите удалить установленную надстройку, начните с выбора кнопки « Мои надстройки» на вкладке « Вставка ». Затем нажмите кнопку « Дополнительно» (в трех точках) в правом верхнем углу надстройки. Выберите « Удалить», а затем снова « Удалить» во всплывающем окне подтверждения.

Удаление надстройки Excel

Какие ваши любимые надстройки Excel?

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

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

Макрос VBA загрузки списка файлов из папки

Функция FilenamesCollection предназначена для получения списка файлов из папки, с учётом выбранной глубины поиска в подпапках.

Используется рекурсивный перебор папок, до заданного уровня вложенности.
В процессе перебора папок, пути у найденным файлам помещаются в коллекцию (объект типа Collection) для последующего перебора.

К статье прикреплено 2 примера файла с макросами на основе этой функции:

  • Читать далее
  • 301880 просмотров
  • 2 прикреплённых файла

Выпадающий календарь в ячейке листа Excel

Надстройка samradDatePicker (русифицированная) для облегчения ввода даты в ячейки листа Excel.

Добавляет в контекстное меня ячеек пункт выбора даты, а при выделении ячеек, содержащих дату, справа от ячейки отображает значок календаря.

Поместите файл надстройки из вложения в папку автозагрузки Excel (C:Program FilesMicrosoft OfficeOFFICExxXLSTART).

В контекстном меню ячеек появляется новый пункт — «Выбрать дату из календаря«.
Рядом с ячейками, в которые уже введена дата, будет отображаться маленький календарик, щелчок по которому вызовет большой календарь — для выбора даты.

  • Читать далее
  • 290064 просмотра
  • 2 прикреплённых файла

Требуется макросом поместить изображение (картинку) на лист Excel?

Используйте функцию ВставитьКартинку, которая позволит вам вставить картинку в выбранную ячейку (или диапазон ячеек).

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

В этом примере демонстрируются возможные варианты применения функции вставки картинок:

  • Читать далее
  • 237284 просмотра

макрос удалит на листе все строки, в которых содержится искомый текст:

(пример — во вложении ConditionalRowsDeleting.xls)

Sub УдалениеСтрокПоУсловию()
    Dim ra As Range, delra As Range, ТекстДляПоиска As String
    Application.ScreenUpdating = False    ' отключаем обновление экрана

    ТекстДляПоиска = "Наименование ценности"    ' удаляем строки с таким текстом

    ' перебираем все строки в используемом диапазоне листа
    For Each ra In ActiveSheet.UsedRange.Rows
  • Читать далее
  • 234926 просмотров
  • 2 прикреплённых файла

Функции GetFileName и GetFilePath по сути аналогичны, и предназначены для вывода диалогового окна выбора файла
(при этом можно указать стартовую папку для поиска файла, и тип/расширение выбираемого файла)

Функция GetFilenamesCollection позволяет выборать сразу несколько файлов в одной папке.

Функция GetFolderPath работает также, только служит для вывода диалогового окна выбора папки.

  • Читать далее
  • 214469 просмотров
Подробности
Создано 27 Март 2011
Содержание
Персональная книга макросов
XLA/XLAM
XLS/XLA как ссылка
XLL
COM DLL (Office Developer Tools – ODT)
Установка COM DLL:
Настройка ленты Office 2007:
Вызов процедур COM-DLL из VBA
COM DLL (Visual Studio Tools for Office – VSTO)

Те, кто программирует на VBA для Excel, в определенный момент задумываются над распространением своих приложений в качестве независимых файлов. Лучшая возможность для организации распространяемых файлов – это создание специальных дополнений или надстроек Excel. За время развития программы появилось несколько типов надстроек. Мы попытались собрать и систематизировать информацию для разработчиков обо всех видах, назначениях, достоинствах и недостатках надстроек Excel.

Персональная книга макросов

Описание: хранение общих функций и процедур для персонального использования
Требования: нет
Достоинства: возможность хранения пользовательских функций для работы с данными (UDF)
Недостатки: сложности с тиражированием

Для общих программ и макросов можно использовать, так называемую, личную книгу макросов – по умолчанию это файл PERSONAL.XLS (в Excel 2007-2010 PERSONAL.XLSB). Файл с данным именем создается с при записи макроса средствами Excel. Этот файл будет автоматически загружаться каждый раз при запуске Excel. Местонахождение данного файла в каталоге Windows: ПОЛЬЗОВАТЕЛЬApplication DataMicrosoftExcelXLSTART. На самом деле Excel будет запускать автоматически все файлы из данного каталога, независимо от имен файлов.

В принципе, личные книги макросов можно считать надстройками Excel. В файле PERSONAL.XLS (или любом другом из стартового каталога) можно хранить общие функции и макросы, автоматизирующие часто повторяемые операции. Для выполнения каких-либо операций при старте Excel можно использовать событие Worbook_Open этого файла, либо процедуру Auto_Open в модуле кода.

Как вносить исправления в PERSONAL.XLSB

XLA/XLAM

Описание: стандартная надстройка
Требования: нет
Достоинства: возможность создания тиражируемых продуктов
Недостатки: слабая защита исходного кода программ.

Надстройки с расширением xla (в версии 2007-2010 xlam) представляют собой стандартный xls-файл, который может быть открыт как невидимая в списке открытых файлов рабочая книга.

Файл надстройки обычно содержит программный код, который управляет какими-либо оперциями активной рабочей книги Excel. Теоретически, кроме модулей кода, в состав xla-файла могут быть таблицы и даже листы диаграмм, но надо понимать, что особого смысла в этих данных нет, так как нет возможности отобразить эти данные на экране стандартными средствами. На рабочих листах надстройки можно хранить, например, константы для работы кода, если по каким-либо соображениям не хочется использовать константы VBA. Данные в ячейках файла надстройки можно даже изменять во время работы, но сохранять открытый и исполняемый в данный момент файл xla в общем случае недопустимо.

Для доступа к данным рабочей книги надстройки используется объект ThisWorkbook, а для работы с активной рабочей книгой – объект ActiveWorkbook.

В надстройках имеется возможность хранить пользовательские функции для работы с данными рабочих листов (user defined function — UDF). Только надо учитывать, что в этом случае рабочий файл сохраняет ссылку (связь) на файл надстройки по абсолютному пути. Эта особенность может затруднить распространение программных продуктов.

Отладку надстроек лучше производить через xls-файл (не забывая различия между ThisWorkbook и ActiveWorkbook), а впоследствии сохранять этот файл как xla. Нектороые сложности могут в этом случае возникнуть при использовании событий Workbook_AddinInstall и Workbook_AddinUninstall, так как их невозможно эмулировать в простом файле рабочей книги. К счастью, эти события требуются крайне редко; честно говоря, мы не знаем ни одного примера их полезного использования на практике.

Подключать готовую XLA-надстройку можно через соответствующий диалог (Excel 2000-2003 Сервис Надстройки, Excel 2007 Кнопка Office Параметры Excel Надстройки Перейти).

Подключаемые надстройки прописываются в реестре Windows по адресу HKEY_CURRENT_USER Software Microsoft Office НОМЕР_ВЕРСИИ.0 Excel Options в строковых параметрах с префиксом OPEN и порядковым номером надстройки (причем первая по порядку надстройка номера не имеет). Управляя этим ключом реестра, можно подключить / отключить надстройку через инсталляционные программы. Это, кстати, еще одна причина никогда не использовать событие Workbook_AddinInstall – очевидно, что оно не будет вызвано при изменении ключей реестра внешними программами.

Имя и описание надстройки можно задать в свойствах файла перед его сохранением в форматие xla/xlam (Excel 2000-2003 Файл Свойства, Excel 2007 Кнопка Office Подготовить Свойства).

Важным преимуществом надстройки XLA/XLAM вместо использования кода внутри рабочих файлов является возможность повторного использования кода VBA. Кроме того, установленные надстройки не спрашивают о наличии макросов при запуске Excel на любом уровне безопасности.

Интересная, но скорее всего бесполезная в работе информация. Надстройки XLA в Excel версии 5.0-8.0 (95-97) хранятся в скомпилированном виде. В связи с этим, там просто нет исходного текста программ в открытом или зашифрованном виде. Эта особенность приводит к невозможности декомпиляции или вскрытию кода специальными средствами. К сожалению, в последующих версиях Excel надстройки хранятся в нескомпилированном виде и легко преобразуются в доступный для изменения файл, даже будучи защищенными паролями. Microsoft рекомендует использовать для разработчиков возможности COM-DLL и средства VSTO (см. далее).

В качестве примера XLA-надстройки, можно ознакомиться с исходным кодом надстройки ExcelFin в разделе Программы.

XLS/XLA как ссылка

Описание: библиотека кода VBA
Требования: нет
Достоинства: не требует компиляции во внешних программных продуктах
Недостатки: сложность распространения из-за абсолютных ссылок на файлы

Если вы создали набор общеупотребительных функций, но не имеете возможность скомпилировать библиотеку в виде XLL или DLL-файла (см.ниже), то можно подключить любой VBA-код XLS-файла в качестве ссылки в проекте. Делается это в окне редактора кода через меню Tools References.

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

При использовании общего кода XLA-надстроек и ссылок к XLS-файлам важную роль играет определение методов и свойств класса Friend. Эти методы и свойства видны внутри проекта, но не во внешнем файле, использующем ссылку. Внутри одного файла определение Friend соответствует Public.

XLL

Описание: библиотека функций рабочего листа
Требования: компилятор C/C++ и API-библиотека
Достоинства: создание наиболее производительных функций с полным встраиванием в интерфейс Excel
Недостатки: нет

Наиболее производительные пользовательские функций для работы с таблицами реализуются при помощи XLL-надстроек.

XLL-надстройка представляет собой скомпилированный на C/C++ файл динамической библиотеки Windows, специально предназначенной для использования в Excel. Разработчикам предоставляется специальная библиотека C API (Excel XLL SDK). Использование языка C с возможностью управления памятью позволяют разработать самые мощные и производительные функции для работы с данными Excel. Сравните производительность встроенных функций и UDF, разработанных на VBA.

Мы не имеем практического опыта разработки XLL-надстроек, поэтому желающих разрабатывать библиотеки такого типа отсылаем к MSDN.

Microsoft Excel 2010 XLL Software Development Kit

Имеется не очень стандартный способ регистрации UDF-функций для вывода пользовательской функции на VBA в интерфейсе Excel через Application.ExecuteExcel4Macro(“REGISTER(…)”) . Метод проверен и работает. Но не дает никаких преимуществ в производительности функций, поэтому в практической работе его ценность сомнительна. Подробнее читайте:

Регистрация UDF

COM DLL (Office Developer Tools – ODT)

Описание: полнофункциональная надстройка Excel
Требования: ODE 97 или ODT XP
Достоинства: возможность создания интерфейса любой сложности; полностью закрытый исходный код.
Недостатки: невозможно создание пользовательских функций для работы с данными (UDF)

Версии Excel 97 (8.0), 2000 (9.0) и XP (10.0) имели специальный вариант пакетов для разработчика под названием Developer Edition (ODE) или Developer Tools (ODT). В версиях ODE 9.0 и ODT 10.0 имелась возможность создавать библиотеки формата ActiveX DLL непосредственно при помощи пакета Office без использования внешних компиляторов. К сожалению, в последующих версиях Excel эта возможность была удалена, Microsoft отсылает разработчиков к технологии Visual Studio Tools for Office (VSTO) с использованием .NET Framework.

Главной особенность Excel ODT является наличие возможности создания проекта VBA независимого от xls-файла, с возможностью последующей компиляции данного проекта в файл формата DLL (ActiveX DLL).

Исходный VBA-проект содержит специальный дизайнер с методами обработки событий Excel. В проекте, кроме этого, доступны для создания обычные модули кода, классы и формы. Причем формы могут быть открыты немодально. Надстройки данного типа могут быть подключены к различным версиям Excel одновременно. Файл DLL, скомпилированный с помощью ODE/ODT не требует никаких дополнительных исполняемых модулей для своей работы, кроме, собственно говоря, Excel.

Здесь важное замечание, что, даже если вас заинтересовали возможности ODE/ODT, вам вряд ли удастся приобрести лицензионные версии этих продуктов – Microsoft с 2003го года прекратил их распространение. Вообще же вероятно, что в России, официальным способом было приобретено совсем небольшое количество копий пакетов для разработчиков, поэтому искать пиратскую версию этих продуктов тоже особого смысла не имеет.

Microsoft Office 2000 Developer Edition
Microsoft Office XP Developer

Настройка ленты Office 2007:

В отличие от панелей инструментов, новый пользовательский интерфейс Excel 2007 в виде ленты (ribbons) не имеет встроенных механизмов настройки напрямую через VBA.

Имеется довольно странный механизм настройки ленты через редактирование xml-файла. Формат xlsx представляет из себя zip-архив нескольких файлов и папок, в одном из которых доступна настройка на ленте пользовательских функций. Странно, но разработчики Excel почему-то не предоставили интерфейс для настройки ленты иным способом. Подробнее см. MSDN:

Настройка ленты Office 2007

Вызов процедур COM-DLL из VBA

В тех случаях, когда основной алгоритм закрыт в COM-надстройке, вызов функций и процедур (например, из обработчиков пунктов меню) осуществляется через механизм позднего связывания (Late-bound). Для получения доступа к объекту надстройки используется функция COMAddIns объекта Application с указанием имени COM-надстройки. Например:

Private Function GetAddinObject_() As Object
    Dim obj As Object
    
    On Error Resume Next
    
    Set obj = Application.COMAddIns("имя.надстройки").Object
    
    Set GetAddinObject_ = obj
End Function

COM DLL (Visual Studio Tools for Office – VSTO)

Описание: полнофункциональная надстройка Excel
Требования: Visual Studio .NET различных версий и пакет VSTO
Достоинства: возможность создания интерфейса любой сложности, с использованием специфических возможностей Office 2003-2010: окна, ассистент, лента
Недостатки: требует специальный run-time-пакет (иногда несколько инсталляционных файлов) при распространении.

Этот инструмент, пожалуй, наиболее мощное средство разработки надстроек Excel. Разработчику доступны все средства технологии .NET, в том числе различные языки программирования, элементы управления и прочие ресурсы. VSTO предоставляет разработчику специальный шаблон проекта .NET. Доступ к объектам Excel осуществляется стандартными средствами языков программирования. В результате компиляции проекта также как в предыдущем примере формируется COM DLL файл. Здесь главное отличие от DLL, скомпилированных в ODT, это возможность использования любых элементов управления .NET. Однако, в отличие от ODT COM DLL, разработанный с использованием VSTO, требует дополнительных run-time пакетов на компьютере конечного пользователя. Последнее может существенно затруднить распространение программных продуктов.

Пример функциональноых возможностей настройки с использованием VSTO представлен на сайте в разделе Надстройки. В разделе Загрузки можно скачать архив исходного кода VB.NET этой надстройки.

VSTO
Миграция от ODT к VSTO

Смотри также

» Пересчет отдельных формул в рабочей книге

Типичная проблема при работе с большими или очень большими файлами Excel — это слишком сильное замедление при выполнении любых расчетов….

» Использование Excel в задачах финансового менеджмента

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

» Редактирование формул

При построении экономических моделей, обработке больших объемов данных, статистических расчетах и других задачах, решаемых при помощи…

» Копирование и вставка

В статье описываются возможности использования буфера обмена Windows и Microsoft Office, а также особенности копирования и вставки данных в Excel….

» Класс сохранения настроек Excel

В данной статье описывается небольшой, но очень удобный класс для сохранения и автоматического восстановления таких параметров…

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

Понравилась статья? Поделить с друзьями:
  • Надстройки для excel поставить
  • Надстройки для excel онлайн
  • Надстройки для excel не работает
  • Надстройки для excel лента
  • Надстройки для excel как открыть