Надстройка книга excel что это

Хитрости »

11 Август 2014              95556 просмотров


Как создать свою надстройку?

В этой статье:

  • Что такое надстройка
  • Как создать надстройку
  • Создание собственного меню надстройки для версий Excel 2003
  • Создание собственного меню надстройки для версий 2007 и выше

 
ЧТО ТАКОЕ НАДСТРОЙКА
Для начала разберемся — что такое надстройка и для чего она нужна.

Надстройка

— это файл Excel, имеющий расширение .xla или .xlam(только для 2007 и выше), который по умолчанию открывается как скрытая рабочая книга и может быть подключен к приложению для автоматического запуска вместе с запуском самого приложения. Книга надстройки открывается, но в списке видимых открытых файлов не значится, поэтому нет смысла её там искать. Отобразить такую книгу возможно только кодом.

Есть также и другие виды надстроек — надстройки COM и XLL-надстройки. Но о них я не буду рассказывать, т.к. они разрабатываются не в VBA, а в иных средах программирования

Как правило надстройки используют для распространения программного кода, который будет доступен для любой книги Excel. Т.к. надстройка запускается вместе с приложением — очень удобно хранить в ней коды. Можно создать меню для запуска процедур(об этом ниже) и функции пользователя — созданные в надстройке они доступны в любой открытой книге Excel без ссылок на другую книгу, что несомненно очень удобно. Функции пользователя, прописанные в надстройке для Excel 2007 и выше так же доступны по вводимым начальным символам:
Подбор по имени функции
и после нажатия TAB имя функции будет вставлено в ячейку.
Кроме модулей с кодами надстройки могут содержать и таблицы данных и диаграммы и все, что можно хранить в обычной книге. Но учитывая то, что книга скрыта — особого смысла в этих данных нет, если только не предполагается использовать эти данные в качестве шаблонов для создания определенных отчетов из надстройки. Часто на листах надстроек хранят константы для работы кода, если по каким-либо причинам не хочется использовать константы внутри кода VBA. Данные в ячейках файла надстройки можно изменять во время работы, но я не рекомендую сохранять открытый и исполняемый в данный момент файл надстройки, во избежание конфликтов.

 
КАК СОЗДАТЬ НАДСТРОЙКУ
Создать надстройку просто: из любого файла Excel идете в меню:

  • Excel 2010 и новее: Файл (File)Сохранить как (Save As)-Из выпадающего списка «Тип файла» выбрать Надстройка Excel(.xlam) (Excel Add-In(.xlam)) или Надстройка Excel 97-2003(.xla) (Excel 97-2003 Add-In(.xla)).
  • Excel 2007: Кнопка ОфисСохранить как (Save As)-Из выпадающего списка «Тип файла» выбрать Надстройка Excel(.xlam) (Excel Add-In(.xlam)) или Надстройка Excel 97-2003(.xla) (Excel 97-2003 Add-In(.xla)).
  • Excel 2003: МенюСохранить как-Из выпадающего списка «Тип файла» выбрать «Надстройка Excel(.xla)«.
  • Сохранить как

Однако рекомендую не спешить с сохранением файла как надстройки. Сначала следует весь функционал, закладываемый в надстройку, потестировать, отладить и удостовериться, что все работает как предполагалось. Т.к. после сохранения файла как надстройки и открытия надстройки в Excel — закрыть её можно будет только закрыв Excel полностью(конечно, можно еще воспользоваться кодом вроде Workbooks("MyAddin.xla").Close, но это не очень удобно в разработке).
Если все же сохранили файл как надстройку, но хотите что-то изменить в книге(удалить лишние листы, изменить информацию на листах(часто так делается для хранения настроек) и т.п.) — то надо в редакторе VBA найти проект надстройки, перейти в свойства модуля ЭтаКнига(или ThisWorkbook) и выставить IsAddin = False. Книга отобразиться. Далее надо будет вернуть свойство IsAddin в True и сохранить проект
Так же следует заранее выбрать формат надстройки — для версий Excel 97-2003(.xla) и или только от 2007(.xlam) и выше. Надстройки .xla работают во всех версиях Excel, в том числе и в 2007 и выше. Это, пожалуй, единственное их преимущество перед форматом .xlam. Т.к. при этом все меню, которые будут созданы для вызова кодов, в версиях от 2007 и выше будут располагаться на вкладке «Надстройки» и будут иметь минимум настроек: нет возможности изменить размер значка; разбить на группы; сделать красивые подсказки; расположить в два ряда и т.п.
Для формата .xlam доступен более широкий ассортимент: они могут так же создать меню на вкладке «Надстройки», а могут и создавать собственные вкладки(через XML-схемы), команды на которых можно расположить в соответствии со всеми красивостями и достоинствами оформления, которое можно наблюдать в Ribbon-панелях Excel 2007 и выше.
Дальше я как раз более подробно расскажу про оба метода создания меню.

Я покажу создание надстроек на примере простого кода, который будет записывать в активную ячейку текущего листа число 10, закрасит ячейку красным цветом и установит для ячейки границы.
Код этой процедуры:

'---------------------------------------------------------------------------------------
' Procedure : Test
' DateTime  : 11.08.2014 12:08
' Author    : The_Prist(Щербаков Дмитрий)
'             http://www.excel-vba.ru
' Purpose   : Записываем в активную ячейку число 10
'             красим в красный цвет заливку
'             устанавливаем границы
'---------------------------------------------------------------------------------------
Sub Test()
    With ActiveCell
        .Value = 10
        .Interior.Color = vbRed
        .Borders.Color = vbBlack
    End With
End Sub

Важно: Код помещается в стандартный модуль книги, из которой хотите сделать надстройку.

 
СОЗДАНИЕ СОБСТВЕННОГО МЕНЮ НАДСТРОЙКИ ДЛЯ ВЕРСИЙ EXCEL 2003

Примерный вид данного меню в Excel 2003:
Панель в Excel 2003
Примерный вид меню в Excel 2007 и выше:
Меню в Excel 2007 и выше

Собственно, меню, совместимое со всеми версиями Excel делается исключительно на уровне VBA следующим кодом:

'---------------------------------------------------------------------------------------
' Module    : ЭтаКнига
' DateTime  : 11.08.2014 12:13
' Author    : The_Prist(Щербаков Дмитрий)
'             http://www.excel-vba.ru
' Purpose   : 
'---------------------------------------------------------------------------------------
Option Explicit
'константа уровня модуля - имя меню
'Обязательно задать, чтобы можно было идентифицировать
Const sMenuBarName As String = "Test Addin www.Excel-VBA.ru"
 
'---------------------------------------------------------------------------------------
' Procedure : Workbook_BeforeClose
' Purpose   : Процедура выполняется перед закрытием книги
'             удаляем созданное меню после закрытия надстройки
'---------------------------------------------------------------------------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next ' обработчик ошибки нужен, если меню такого нет
    'удаляем меню, для исключения дублирования меню при повторном запуске
    Application.CommandBars(sMenuBarName).Delete
End Sub
 
'---------------------------------------------------------------------------------------
' Procedure : Workbook_Open
' DateTime  : 11.08.2014 12:39
' Author    : The_Prist(Щербаков Дмитрий)
'             http://www.excel-vba.ru
' Purpose   : Процедура создания меню
'             как отдельная панель для 2003
'             на вкладке "Надстройки" для 2007 и выше
'---------------------------------------------------------------------------------------
Private Sub Workbook_Open()
    On Error Resume Next ' обработчик ошибки нужен, если меню такого нет
    'удаляем меню, для исключения дублирования меню при повторном запуске
    Application.CommandBars(sMenuBarName).Delete
    On Error GoTo 0
    'добавляем меню
    With Application.CommandBars.Add(sMenuBarName, temporary:=True)
        'добавляем новую кнопку
        With .Controls.Add(Type:=1) 'добавляем обычную кнопку на панель
            'отображаемый текст кнопки
            .Caption = "ИЗМЕНИТЬ СВОЙСТВА АКТИВНОЙ ЯЧЕЙКИ"
            'стиль кнопки
            'доступные стили:
            '1 - только значок(16x16)
            '2 - только текст
            '3 - картинка и текст
            .Style = 3
            'назначаем картинку из набора офиса
            'посмотреть доступные можно: http://www.excel-vba.ru/general/moi-nadstrojki/panel-ikonok-faceid/
            .FaceId = 2
            'имя процедуры, которая будет выполнена при нажатии кнопки
            .OnAction = "Test"
        End With
        'делаем меню видимым
        .Visible = True
    End With
End Sub

Основные моменты я постарался расписать в комментариях, но на некоторых все же хочу заострить внимание.

  • Свойство Type
    .Controls.Add(Type:=1)
    Наверное, самое важное свойство. Оно отвечает за тип элемента меню. Доступно всего пять типов:

    • 1Button(обычная кнопка)
    • 2TextBox(текстовое поле с возможностью записи в него значений и считывания значений из него)
    • 3List(выпадающий список с заранее заданным списком значений)
    • 4ComboBox(выпадающий список с возможностью записи в поле произвольного значения)
    • 10PopupMenu(выпадающее меню с возможностью добавления новых элементов)
  • Иногда возникает вопрос: как сделать на такой панели ToggleButton? Т.е. кнопку, которая при нажатии остается в нажатом состоянии, а при повторном нажатии — в отжатом(т.е. в обычном). В данном случае это возможно исключительно через «финты» вызываемой по нажатию кнопки процедуры:

    Sub Add_CmBar()
        With Application.CommandBars.Add("Test ToggleButton", temporary:=True)
            With .Controls.Add(Type:=1)
                .Caption = "ToggleButton"
                .Style = 2
                .OnAction = "Emulate_Toggle"
            End With
            .Visible = True
        End With
    End Sub
    'процедура, которая выполняется при нажатии кнопки "ToggleButton". Меняет видимое состояние кнопки.
    Sub Emulate_Toggle()
        Dim bt As CommandBarButton
        Set bt = Application.CommandBars.ActionControl
        'проверяем текущее состояние кнопки. 
        'если нажата - отжимаем, если отжата - нажимаем
        If bt.State = msoButtonDown Then
            bt.State = msoButtonUp
        Else
            bt.State = msoButtonDown
        End If
    End Sub

    Еще одна проблема при разработке таких панелей: невозможность явно указать кнопку в стиле Caption(т.е. неактивную к нажатию кнопку). Это тоже можно сделать при помощи обычной Button, только в свойствах кнопки надо свойство Enabled установить в False:
    .Enabled = False
    при этом обязательно необходимо указать Style 2 и назначить Caption.

  • Свойство Style
    .Style = 3
    данное свойство управляет видом кнопки. Доступные стили:

    • 1 — только значок(16×16). Необходимо указывать свойство FaceID
    • 2 — только текст. Свойство FaceId может быть указано, но никак не влияет на внешний вид кнопки
    • 3 — картинка и текст. Обязательно указывать хотя бы одно из свойств: Caption или FaceID

    Если хотите отобразить просто значок или значок вместе с текстом — то столкнетесь с проблемой выбора значка. Поэтому я давно создал надстройку, которая позволяет просмотреть все ID всех доступных значков офиса: Панель иконок FaceID.
    Так же можно и свои значки создавать, однако я не буду здесь затрагивать эту тему, т.к. получится запутанно и обширно. Если кратко: необходимо создать свой значок размером 16×16, с расширением .gif. Затем создать копию иконки и предполагаемые непрозрачные области закрасить черным, а прозрачные — белым. Эту копию необходимо задать для свойства .Mask

  • Свойство OnAction:
    .OnAction = «Test»
    Данная строка отвечает за назначение процедуры, которая будет выполнена после нажатия на кнопку(в случае с ComboBox и TextBox — изменение значения. Вызван код будет после выхода из режима редактирования элемента). Test — это имя процедуры. Её я привел выше и именно она будет выполнена при нажатии на эту кнопку.

Положение CommandBar на панели
Так же у объекта CommandBar есть такие свойства как .Left(положение относительно левого края окна Excel) и .Top(положение относительно верхнего края окна Excel), которые задают положение строки меню на панели. Но они мало актуальны для версий 2007 и выше, т.к. там для таких панелей отведена отдельная вкладка и все они помещаются на ней в том порядке, в котором были на неё добавлены. По умолчанию, если данные свойства не заданы — в 2003 Excel панель создается плавающая и пользователь может переместить её в любое удобное для него место. Если же они указаны, то панель будет расположена в заданных координатах относительно окна Excel.

Во вложении ниже пример надстройки с открытым кодом. Но в примере код расширен — там я привел коды с использованием всех типов элементов: и кнопки, и эмуляция ToggleButton, и списки, и текстбокс и выпадающее меню с доп.кнопками. В кодах есть комментарии, поэтому при желании разобраться не составит труда.


Так же можно при запуске надстройки добавлять в контекстное меню(меню, появляющееся по правому клику мыши на ячейке) свои команды. По сути мало что меняется, кроме пары вещей:

  1. надо указывать конкретное имя меню, в которое добавляем некую кнопку. Для контекстного меню ячеек это «Cell»:
    Application.CommandBars(«Cell»)
  2. лучше указывать положение элемента относительно уже существующих в меню. Делает это при помощи указания параметров before или after:
    Application.CommandBars(«Cell»).Controls.Add(Type:=1, before:=4)

При этом добавить можно как собственные кнопки, так и уже существующие. Для примера добавим одной кнопкой дубль нашей команды с лены «ИЗМЕНИТЬ СВОЙСТВА АТИВНОЙ ЯЧЕЙКИ», а второй — вставку в ячейку только значений(встроенная команда — подробнее в статье: Как удалить в ячейке формулу, оставив значения?):

    '=========================================================
    '
    '  ДОБАВЛЯЕМ СВОЙ ПУНКТ В МЕНЮ ПРАВОЙ КНОПКИ МЫШИ
    '
    With Application.CommandBars("Cell")
        'дублируем кнопку "ИЗМЕНИТЬ СВОЙСТВА АТИВНОЙ ЯЧЕЙКИ" с панели
        'добавляем перед 4-м элементом
        With .Controls.Add(Type:=1, before:=4)
            .Caption = "ИЗМЕНИТЬ СВОЙСТВА АТИВНОЙ ЯЧЕЙКИ"
            .Style = 3
            .FaceId = 2
            .OnAction = "Test"
        End With
        'добавляем кнопку встроенной в Excel команды "Вставить значения"
        'ищем команду "Вставить значения" по её ID в контекстном меню
        Set cbb = .FindControl(ID:=370)
        'удаляем команду из меню, если она была уже добавлена ранее
        If Not cbb Is Nothing Then
            cbb.Delete
        End If
        'добавляем перед 5-м элементом(после наше собственной команды)
        .Controls.Add ID:=370, before:=5
    End With

Скачать пример:

  Надстройка для Excel 97-2003 и выше.zip (22,6 KiB, 3 080 скачиваний)


 
СОЗДАНИЕ СОБСТВЕННОГО МЕНЮ НАДСТРОЙКИ ДЛЯ ВЕРСИЙ EXCEL 2007
Как я уже писал — для Excel 2007 и выше подходит описанный выше метод создания собственного меню для ранних версий. Однако меню в данном случае помещается исключительно на вкладку «Надстройки» и имеет довольно убогий вид (как можно лицезреть выше) в сравнении с общим Ribbon-интерфейсом других панелей. Чтобы посмотреть как это выглядит можете просто скачать файл выше и запустить его. Появится вкладка «Надстройки» с одной кнопкой.

Однако учитывая появившуюся в 2007 версии офиса возможность кастомизировать ленту Ribbon через язык XML, гораздо практичнее(особенно для разработчиков) создавать собственную панель с отдельным именем, на которой можно разместить красиво команды, добавить свои собственные значки для команд без особых усилий.

Примерно так можно все это оформить:
Меню в Excel 2007 через XML

Чтобы добавить свою панель необходимо изменить XML-схему для надстройки, которая присутствует в любом файле формата 2007. Есть несколько методов(я опишу лишь два).

Первый метод

, он же совсем неудобный и требует навыков работы с XML

  1. Изменить расширение файла с .xlam на .rar или .zip и открыть любым архиватором.
    Если не отображается расширение:
    Панель управленияСвойства папки(для Win 7 — Параметры папок)- вкладка Вид— Снять галочку с «Скрывать расширение для зарегистрированных типов файлов»
  2. Добавить в архив папку «customUI», папку «_rels» и папку «images»
  3. Создать файл «customUI.xml», который лично я бы назвал основным — в нем необходимо впоследствии прописать все панели и команды по законам языка XML. После чего данный файл необходимо поместить в папку «customUI»
  4. В папке «images» будут храниться все значки, которые будут расположены на панели
  5. Папка «_rels» должна внутри содержать файл «customUI.xml.rels», в котором перечисляются связи картинок с командами и панелями. Проще говоря — схема взаимосвязей ресурсов

Но все это очень муторно и необходимо знать язык XML. Уверен, большая часть читающих статью уже 100500 раз нахмурили брови и пару раз перечитали, надеясь понять о чем речь. Поэтому не будем дальше разбирать этот метод и перейдем к следующему.

 
Второй метод куда практичнее — использовать специальные программы для работы с Ribbon итерфейсом. Такие как Office Ribbon Editor, RibbonXMLEditor, OpenXML package editor и им подобные. Я сам использую для этих целей надстройку Максима Новикова — RibbonXMLEditor, последнюю версию которой можно скачать по адресу: http://novikovmaxim.narod.ru/index.htm?http://novikovmaxim.narod.ru/products/ribbon/ribbon.htm. На том же сайте можно найти примеры работы с Ribbon-панелью офиса и более подробно почитать про создание своих панелей. Я бы даже рекомендовал это сделать, если планируете создавать подобные файлы. Сама же программа RibbonXMLEditor бесплатна и не требует установки. Но функционал весьма достойный, а использование достаточно простое. Я не буду заострять внимание на всех нюансах работы с ней — все это можно найти на сайте её создателя(что я лично категорично рекомендую). Опишу лишь основное, что может потребоваться.
Для начала работы и создания своего меню необходимо открыть программу RibbonXMLEditor и выбрать в ней файл, в который хотите внедрить меню. Это должен быть файл формата .xlsm,.xlam или .xlsb. Т.к. мы создаем надстройку — наш формат .xlam.
На рисунке отмечены цифрами шаги, расписанные ниже:
RXE
1. Добавляете ribbon (нажатием кнопки на элементе)
2. Далее tabs и tab(так же автоматом добавится элемент groupe) — выделяете строку и внутрь кавычек для id вписываете groupe_1, а для label вписываете имя вкладки — Свойства ячейки.
3. Уже после этого внутрь groupe добавляете button и задаете ей id — change_cell. Должен получится такой код:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
	<ribbon startFromScratch="false">
		<tabs>
			<tab id="excel-vba" label="Test excel-vba.ru">
				<group id="groupe_1" label="Свойства ячейки">
					<button id="change_cell" />
				</group>
			</tab>
		</tabs>
	</ribbon>
</customUI>

Id каждого элемента должно быть уникальным и предпочтительнее указывать его исключительно на латинице(англ.алфавит), т.к. кириллица распознается с трудом и есть шанс получить ошибку.
Теперь продолжаем добавлять свойства для button:
4. для начала подгружаем картинку через соответствующую кнопку.
5. После этого она будет в выпадающем списке правее.
6. Ставим курсор после «change_cell» и нажимаем кнопку вставки тега изображения. Вставляется тег и название. Теперь у нашей кнопки есть картинка.
7. При помощи выпадающего меню параметров выбираем label и вставляем данный тег кнопкой, расположенной правее выпадающего списка. Курсор автоматически будет помещен внутрь кавычек. Вписываем текст — Изменить свойства ячейки.
8. При помощи выпадающего списка функций обратного вызова выбираем onAction и так же вставляем. Вписываем туда имя вызываемой процедуры — CallTest.
В результате должно получиться:

<?xml version="1.0" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
	<ribbon startFromScratch="false">
		<tabs>
			<tab id="excel-vba" label="Test excel-vba.ru">
				<group id="groupe_1" label="Свойства ячейки">
					<button id="change_cell" image="table_edit" label="Изменить свойства ячейки" onAction="CallTest" />
				</group>
			</tab>
		</tabs>
	</ribbon>
</customUI>

Для отладки схемы через RibbonXMLEditor можно использовать кнопку отладки(зеленый треугольник) или сочетание клавиш F9. Для проверки корректности схемы — зеленая галочка. Жмем на неё и если в схеме будут ошибки — они сразу будут найдены и показаны в сообщении, с указанием номера строки и столбца, в которых ошибка.

На этом, казалось бы, все. Но нет. Просто так, сама по себе XML-схема не вызовет процедуру — необходимо создать функции обратного вызова. Вот здесь у RibbonXMLEditor есть еще одна отличная функция — генерация модуля обратных вызовов — 9. Нажимаем на кнопку — получаем готовые функции. Как правило верхние две строки не нужны — нам нужны лишь сами функции:

Sub CallTest(control As IRibbonControl)
 
End Sub

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

Sub CallTest(control As IRibbonControl)
    Call Test
End Sub

В принципе, можно и прямо в эту процедуру прописать все действия из процедуры Test.
Сохраняем.
Открываем наш файл — видим, что новая вкладка «Test excel-vba.ru» появилась, кнопка на ней есть. По нажатии на кнопку выделенная ячейка окрашивается в красный цвет, в ней прописывается значение 10 и создаются границы.

 
Так же можно вставлять на свою вкладку встроенные команды. Для этого в button используется не id, а idMso. Эти команды не нуждаются в обработке обратных вызовов, т.к. при их использовании происходит вызов встроенных функций — кнопки как бы просто дублируются на нашу вкладку со всеми их возможностями. Например, чтобы добавить на свою вкладку стандартную кнопку перехода в VisualBasic надо добавить кнопку с idMso VisualBasic:

<button idMso="VisualBasic" />

Сам код при этом будет выглядеть так:

<?xml version="1.0" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
	<ribbon startFromScratch="false">
		<tabs>
			<tab id="excel-vba" label="Test excel-vba.ru">
				<group id="groupe_1" label="Свойства ячейки">
					<button id="change_cell" image="table_edit" label="Изменить свойства ячейки" onAction="CallTest" />
                                        <button idMso="VisualBasic" />
				</group>
			</tab>
		</tabs>
	</ribbon>
</customUI>

Естественно, на создании одних кнопок функционал лент Ribbon не ограничивается. Доступны почти все элементы(вып.меню, галереи, большие иконки(32х32) и т.д.), которые есть в стандартных вкладках. Если чуть потренироваться и поэкспериментировать с приложением RibbonXMLEditor — то вскоре вы сможете быстро и легко создавать красивые и функциональные приложения. Как пример таких приложений можете посмотреть описание к моей надстройке MulTEx.


Так же как и в случае с надстройками для 2003 Excel, здесь можно создавать кнопки в контекстном меню(правая кнопка мыши), но и тут не обошлось без нюансов:

  1. изменение данного меню доступно только начиная с версии Excel 2010. Для 2007 версии придется использовать старые методы — те же, что и для 2003(т.е. внедрение отдельного кода на Workbook_Open надстройки, как в примере выше для надстройки 2003)
  2. в надстройке Ribbon XML Editor я не нашел встроенного инструмента для вставки кодов обработки меню правой кнопкой мыши. Похожий по «звучанию» contextualTabs не совсем то, что нужно(а если быть точнее — совсем не то). contextualTabs — это динамические вкладки, которые появляются после основных вкладок при работе с определенными объектами. Например, с умными таблицами. Когда выделяем умную таблицу или любую ячейку в ней, то появляется группа динамических вкладок «Работа с таблицами». Вот в неё и вносятся изменения при помощи contextualTabs

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

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
	<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
	<ribbon startFromScratch="false">
		<tabs>
			<tab id="excel-vba" label="Test excel-vba.ru">
				<group id="groupe_1" label="Свойства ячейки">
					<button id="change_cell" image="table_edit" label="Изменить свойства ячейки" onAction="CallTest" />
                                        <button idMso="VisualBasic" />
				</group>
			</tab>
		</tabs>
	</ribbon>
 
	<contextMenus>
		<contextMenu idMso="ContextMenuCell">
			<button id="change_cell_context" 
					image="table_edit" 
					label="Изменить свойства ячейки" 
					onAction="CallTest" 
					insertBeforeMso="Cut" />
		</contextMenu>
	</contextMenus>
</customUI>

добавлять его надо исключительно на вкладке 2010, 2013(customUI14.xml) внизу редактора Ribbon XML Editor. Обращаю внимание, что код создания собственной вкладки на панели дублируется: он должен присутствовать и в 2007(customUI.xml) и в 2010, 2013(customUI14.xml). Это необходимо сделать, чтобы в 2007 Excel была только вкладка, а начиная с 2010 — еще и контекстное меню(схемы customUI.xml и customUI14.xml обрабатываются отдельно друг от друга в зависимости от того, в какой версии открыт файл). При этом в 2007 это никаких ошибок не вызовет.
Остальные правила для создания элементов меню точно такие же, как и для вкладок: можно добавлять как собственные команды, так и встроенные(при помощи idMso).
Я сам предпочитаю контекстное меню дополнять исключительно кодом VBA, т.к. для 2007 его в любом случае придется писать.

Скачать пример надстройки для 2007 Excel

  Надстройка для Excel 2007 и выше.zip (14,6 KiB, 3 402 скачиваний)

В примере я не стал делать много кнопок и их обработку — слишком уж много различных элементов там доступны и для раскрытия всего функционала этой статьи не хватит. Да и в интернете уже полно статей с разбором работы с XML-интерфейсом новых версий Excel. Основной упор сделан на создание основной вкладки и контекстного меню, т.к. техника создания контекстного меню уж очень не очевидна из надстройка Ribbon XML Editor.

Осталось дело за малым — научиться эти надстройки подключать. Но об этом я уже писал в статье Подключение/отключение надстроек


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Надстройка ЁXCEL


Более 100 команд, которых нет в MS Excel.


Мгновенная обработка данных благодаря уникальным алгоритмам.


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


Гибкая индивидуальная настройка параметров.


Полная on-line справка на русском языке.


Более 60 формул, которых нет в MS Excel.


Дружелюбный интерфейс не оставляет вопросов.


Действия большинства операций можно отменить стандартным способом.


Постоянное добавление новых команд и функций.


E-mail поддержка и консультация пользователей.

Скачать


Как это работает?

Все команды и формулы надстройки ЁXCEL работают так же, как и встроенные в MS Excel.

  • Новая вкладка меню
  • Как использовать команды?
  • Как работает отмена?
  • Как использовать формулы?

Новая вкладка меню

Надстройка ЁXCEL создаст в вашем MS Excel новую вкладку меню с командами и формулами. Если надстройку удалить или отключить — эта вкладка исчезнет.


Управление файлами
   
Управление формулами
   
Управление почтовыми рассылками
Управление рабочей книгой
   
Управление таблицами
   
Маркетинг и управление запасами
Управление листами
   
Управление диаграммами
   
Управление сводными таблицами
Обработка текста, чисел и дат
   
Календарь для ввода дат
   
Управление графическими объектами

Управление файлами

 С надстройкой ЁXCEL Вы сможете управлять файлами компьютера прямо из MS Excel.

  • Получить список файлов папки
  • Удалить файлы
  • Создать ссылки на файлы
  • Переименовать файлы

Получить список файлов папки

В меню надстройки ЁXCEL выберите команду «Получить список файлов папки«, укажите папку, тип данных для вывода и нажмите OK. В рабочей книге MS Excel выведется список файлов.


Управление рабочей книгой

Настраивайте внешний вид рабочей книги прямо из меню надстройки ЁXCEL, не углубляясь в меню параметров MS Excel.

  • Создать оглавление книги
  • Изменить стиль ссылок
  • Полосы прокрутки
  • Показать ярлычки листов

Создать оглавление книги

В меню надстройки ЁXCEL выберите команду «Создать оглавление книги» и в активную рабочую книгу добавиться новый лист со ссылками на все листы этой книги.


Управление листами

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

  • Импортировать листы
  • Модуль управления листами
  • Список листов книги
  • Переименовать листы

Импортировать листы

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


Обработка текста, чисел и дат

Выделите ячейки с текстом, числами или датами и воспользуйтесь одной из 25 команд надстройки ЁXCEL. Объединяйте ячейки без потери данных, сжимайте пробелы, меняйте регистр, преобразуйте числа и даты в текст, преобразуйте текст в даты и числа. Быстро создавайте нумерованные списки, удаляйте непечатаемые символы, гиперссылки, примечания, условное форматирование и проверку данных из выделенных ячеек. Меняйте кириллицу на латиницу и наоборот. Извлекайте уникальные слова из текста, генерируйте сложные пароли, удаляйте или добавляйте слова, или символы к тексту выделенных ячеек… Вот только некоторые возможности надстройки ЁXCEL по обработки текста, чисел и дат.

  • Объединить ячейки
  • Заполнить пустые ячейки
  • Преобразовать значения
  • Редактировать значения

Объединить ячейки

Выделите ячейки, которые вы хотите объединить. В меню надстройки ЁXCEL выберите команду «Объединить ячейки без потери данных» и выделенные ячейки будут объединены, а все данные в них сохранятся.


Управление формулами

Надстройка ЁXCEL предоставляет 4 удобных команды по управлению формулами.

  • Закрепить диапазоны
  • Формулы на значения
  • Разорвать связи
  • Пересчитать формулы в диапазоне

Закрепить диапазоны

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


Надстройка ЁXCEL

ОС Windows (RU)
MS Excel 2007 — 2019 (RU)
Версия: 22.02
135 команд
69 формул
Открытый код VBA
On-Line консультации
Регулярные обновления
Для любого количества ПК

Если у Вас возникнут какие-либо вопросы, просто, напишите мне и я постараюсь ответить на них как можно скорее.

hvostov@e-xcel.ru Хвостов Сергей

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

Подробности
Создано 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

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

На этой странице вы найдёте ответы на часто задаваемые вопросы по использованию универсальных надстроек для Excel.

ссылки скачивания и покупки программы

Речь идёт только про условно-бесплатные надстройки для Excel, опубликованные на этом сайте.
Их легко отличить от остальных программ по наличию справа от заголовка статьи
блока со ссылками для загрузки и покупки

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

В большинстве моих надстроек, ограничена только продолжительность бесплатного использования (15 дней).

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

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

Использование программы подразумевает, что вы полностью согласны с условиями лицензионного соглашения

  • 5786 просмотров

Надстройки работают в приложении Microsoft Excel, под управлением операционной системы Windows.

Поддерживаются следующие операционные системы:
Windows XP, Vista, Windows 7, Windows 8, Windows 10

Для надстройки «Парсер сайтов», желательно иметь ОС Windows 7 или новее,
поскольку для некоторых сайтов, работающих по протоколу HTTPS, требуется поддержка новых протоколов,
чего нет в Windows XP, но есть в Windows 7

На серверных версиях ОС Windows работа программ не гарантируется.
В 99% случаев там проблем не будет, но бывают редкие случаи, когда какой-то функционал программы может не работать.

Работа надстроек тестировалась в Microsoft Excel версий:
2007, 2010, 2013, 2016, 2019, Office 365

(Office 365 — это, по сути, версия 2016 или 2019)

Для работы надстройки, необходимо, чтобы макросы в Excel были включены. (как включить макросы в Excel)

ВНИМАНИЕ: надстройка не будет работать на других офисных пакетах (вроде OpenOffice, LibreOffice и т.д.),
а также под управлением других операционных систем (например, в Excel 2004, 2008, 2011 для MacOS — Макинтош)

Чтобы пользоваться надстройкой на Mac — используйте Parallels

  • 10802 просмотра

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

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

ВАЖНО: с 2016 года, после очередного обновления Excel, перед запуском скачанного файла надстройки, необходимо выполнить следующее:

  • найти скачанный файл надстройки в папке (обычно это папка «Загрузки»)
  • щелкнуть правой кнопкой мыши на файле — Свойства — Разблокировать — ОК
  • и только после этого запускать

Это связано с недавним изменением политики безопасности в приложениях Office (скачанные из интернета файлы с макросами, не будучи предварительно разблокированными, запускаются без макросов)

  • 7540 просмотров

Файл надстройки (с расширением .XLA) — обычная книга Excel, только со скрытыми листами,
и запускается также, как и любой другой файл Excel — двойным щелчком мыши на нём.

ВАЖНО: с 2016 года, после очередного обновления Excel, перед запуском скачанного файла надстройки, необходимо выполнить следующее:

  • найти скачанный файл надстройки в папке (обычно это папка «Загрузки»)
  • щелкнуть правой кнопкой мыши на файле — Свойства — Разблокировать — ОК
  • и только после этого запускать

Это связано с недавним изменением политики безопасности в приложениях Office (скачанные из интернета файлы с макросами, не будучи предварительно разблокированными, запускаются без макросов)

Если вы хотите, чтобы надстройка запускалась автоматически при каждом запуске Excel,
то выберите один из 2 способов: (оба способа одновременно не используйте!)

  1. Включите автозапуск в опциях программы.
    Для этого, на панели инструментов надстройки, нажмите кнопку «О программе», и на появившейся форме, на вкладке «ОПЦИИ», поставьте галочку «Запускать надстройку автоматически вместе с Excel»
  2. Подключите надстройку через меню Excel (НЕ РЕКОМЕНДУЕТСЯ!)
    В Excel 2003 это пункт меню «Сервис» — «Надстройки …», в Excel 2007-2016 это делается через «Параметры Excel» — «Надстройки» — пункт Надстройки Excel — кнопка «Перейти»
  • 30083 просмотра

Условно-бесплатные надстройки имеют ограничение на длительность бесплатного использования.

Для большинства моих программ, это 5 — 15 дней с момента первого запуска.

Количество оставшихся дней отображается в окне «О программе».

Если указанного количества дней вам не хватило для тестирования программы,
или же вы хотите продлить пробный период, — обратитесь к администратору сайта (желательно в скайп, ник: ExcelVBA.ru)
и я смогу вам дать код для продления пробного периода на несколько дней (если вы объясните необходимость продления)

После приобретения (оплаты) лицензии, все ограничения на количество дней снимаются (лицензия бессрочная)

  • 7799 просмотров

ВНИМАНИЕ: Все заказанные вами доработки, после их реализации в программе, будут доступны всем пользователям в новой версии программы.

Доработки надстроек бывают нескольких видов:

Исправление ошибок в программе

Все доработки, связанные с устранением ошибок, производятся в срочном порядке, и БЕСПЛАТНО.
Если при использовании программы вы обнаружили ошибку, — обращайтесь ко мне в Скайп или на почту.

Расскажете мне, когда и при каких обстоятельствах появляется ошибка, — и в самое ближайшее время ошибка будет исправлена
(вам надо будет обновить программу до последней версии)

Если ошибка появляется не по вине программы (например, из-за какой-то особенности ваших файлов, или неверных настроек) — я вам об этом сообщу.

Внимание: сообщения об ошибках принимаются только по результатам проверки в ПОСЛЕДНЕЙ ВЕРСИИ ПРОГРАММЫ.

Ошибки в ранних версиях программы, если они не проявляют себя в последней версии, — не рассматриваются.

Небольшая доработка, которая будет полезна не только вам

В этом случае, если ранее (до вас) ко мне обращались с подобной просьбой как минимум 2 пользователя программы,
доработка выполняется БЕСПЛАТНО, но без каких-либо гарантий по срокам

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

Небольшая доработка, которая вряд ли заинтересует других пользователей

Такие доработки выполняются только за деньги (от 1500 рублей к стоимости лицензии), сразу после оплаты (от 1 до 3 дней)

Подобные доработки выполняются ТОЛЬКО ПО ПРЕДОПЛАТЕ 100%, при наличии возможности
(мы созваниваемся по Скайпу, вы объясняете мне, что нового хотите увидеть в программе, — я даю ответ, реально это или нет,
и, если реально, — вы оплачиваете стоимость доработки, и я приступаю к работе)

ВНИМАНИЕ: это касается доработок, которые не скажутся на универсальности программы.

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

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

Тут все зависит от срочности и сложности.

Если подобный запрос мне поступал ранее хотя бы от 2-3 пользователей, — то такая доработка, как правило, уже запланирована, и я сразу озвучу вам, когда планируется её реализация. Т.е. вы можете подождать, и получите необходимый функционал бесплатно, в одной из следующих версий.

Если же вы ждать не хотите, и желаете, чтобы программа была доработана как можно скорее, — то доработка, скорее всего, будет платной (обычно — от 2 до 5 т.р.).
В этом случае, доработка выполняется после оплаты, в течение 3 — 10 дней (выпускается обновление к программе)

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

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

Опубликованные на сайте условно-бесплатные надстройки, как правило, универсальны в использовании.
Универсальность — одно из их преимуществ, которое терять не хотелось бы.

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

В этом случае, ваша программа не будет поддерживать автоматическое обновление, — но зато она будет на все 100% соответствовать вашим запросам.
Если вам потом понадобится доработка такой программы, — то новые версии (с исправлениями) будут отправляться вам на почту, и все доработки будут платными (если вообще будут, — я не гарантирую поддержку программ, модифицированных под ваши нужды. Если надо что-то переделать в универсальной программе, сделав для вас отдельную версию, — озвучивайте СРАЗУ ВСЕ доработки, и тогда я сразу все сделаю. А когда мне говорят, что надо сделать отдельную версию универсальной программы, а потом регулярно её дорабатывать, — я обычно отказываюсь)
Стоимость работы в данном случае обсуждается индивидуально.

  • 5520 просмотров

Обычно такой вопрос задают после проверки моей надстройке на сайте virustotal, где результат проверки выглядит примерно так:
10 антивирусов нашли троян, а остальные 45 не нашли ничего

Если вы не знаете, как трактовать подобный результат, — просто посмотрите, что это за антивирусы такие, и попробуйте их установить, и ваш вопрос отпадет сам собой.
(обычно видят вирус в моих программах чудо-антивирусы, не имеющие даже своего работающего сайта)
На сайте Virustotal надо смотреть ТОЛЬКО на результаты проверки ИЗВЕСТНЫМИ в мире антивирусами (от Касперского, Eset, Symantec, Microsoft, и т.п.)
А они в моих программах ничего плохого не видят.

Особняком стоит антивирус Аваст, — он порой видит в моих программах трояна.
И, хотя их техподдержка обещала исправить проблему еще в начале апреля 2016 года (они подтвердили ложную сработку) — до сих пор не могут внести изменения в алгоритм проверки.
Недавно, спустя пару месяцев после очередного моего запроса, они снова подтвердили, что это ложная сработка. И, как всегда, забыли внести изменения в свою базу.

Осенью 2016 года стал ругаться и встроенный в систему Windows Defender — Защитник Windows, — я сразу же написал в техподдержку, отправил туда все мои программы, по каждой из которых в тот же день пришёл ответ, — всё ок, вирусов нет.
К сожалению, нигде у них на сайте не написано, как скоро они внесут исправления в вирусную базу, чтобы Защитник Windows перестал ругаться на мои программы.
Борьба с Microsoft продолжается уже 2 года, — постоянно у них ложные сработки, я им пишу, они убирают, через месяц опять похожая проблема, и всё заново
Потому, нужно добавить в исключения в Windows Defender мой сайт ExcelVBA.ru и расширение файла XLA
(чтобы он не проверял надстройки для Excel)

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

Так что не переживайте, что некоторые антивирусы ругаются, — в моих программах нет и не может быть вирусов.
Если антивирус на вашем компьютере говорит, что файл моей программы опасен, — просто добавьте его в список исключений антивируса.
А тем, кто доверяет антивирусу больше, чем мне, я могу лишь посоветовать не пользоваться моими программами (ибо доказать отсутствие трояна невозможно)

  • 12047 просмотров

В данной инструкции рассказывается, как программно управлять из макроса следующими надстройками:

Lookup: Подстановка данных из одной таблицы в другую
PastePictures: Вставка изображений в Excel
FillDocuments: Заполнение документов по шаблонам + рассылка почты
Parser: Парсер сайтов и файлов
Unification: объединение прайс-листов
Labels: Формирование этикеток по шаблонам

Наиболее частой задачей при автоматизации работы является запуск по расписанию.
Для этого можете использовать прикреплённый файл autorun_ExcelVBA_addins.xls
(запуск которого можно настроить в Планировщике Windows)

При запуске этого файла, появляется окно с обратным отсчётом времени, по истечении которого будут выполнены команды, заданные в настройках файла:

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

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

Название макроса можно найти в инструкции по API соответствующей программы.
Например, для надстройки FillDocuments мы открываем инструкцию по API, и в ней видим название макроса для запуска: CreateAllDocuments
Для надстройки Lookup в аналогичной инструкции по API находим другое название макросаЖ это будет LookupData

Также к статье прикреплён файл Excel с макросами (ExcelVBA_addins_API.xls), содержащий 2 модуля с кодом:

Модуль modAPI скопируйте в свой файл с макросами

В нём находятся вспомогательные функции для работы с надстройками
ВАЖНО: в первой строке этого модуля надо изменить название надстройки:
Public Const ADDIN_NAME$ = «PastePictures»

В модуле modExamples находятся примеры использования функций API

На основании этого кода вы сможете написать свой макрос или скрипт VBS

  • 1364 просмотра

Процесс покупки очень прост:

  1. в окне «О программе» (на главной вкладке, или на вкладке Активация) 
    щелкаете по ссылке «Приобрести лицензию на программу» (см. скриншот)
    Также можно нажать кнопку на странице программы на сайте.
  2. Смотрите стоимость, выбираете удобный для вас способ оплаты, выполняете перевод денег
    (через интернет-банк, электронные деньги, или другим способом)
  3. Заполняете форму на открывшейся странице, обратив особое внимание на правильность заполнения email
  4. Ожидаете уведомления по почте о том, что деньги получены, и можно активировать программу
    (кодом активации будет ваш адрес электронной почты)
  5. В окне «О программе», на вкладке «Активация», вводите в поле для кода активации свой email,
    нажимаете кнопку Активировать, — и пользуетесь программой на этом компьютере сколько угодно.

Более подробно процесс активации описан на этой странице

Оплатить лицензию можно 2 способами, — через Робокассу (первый вариант оплаты) и напрямую по реквизитам, указанным на сайте (второй вариант оплаты).
Первый вариант дороже на 7-10% (из-за комиссии Робокассы), но быстрее. Если приобретаете лицензию на большое количество компьютеров, намного выгоднее выбрать второй вариант оплаты (без Робокассы).

  • 5399 просмотров
Всё нижесказанное касается только второго способа оплаты (напрямую на счёт разработчика)
Если же вы оплачивали лицензию через робокассу (первый способ оплаты) — уведомление об активации в этом случае моментально отправляется на ваш email

Как уже было сказано выше, ждите уведомление (по почте) о возможности активировать программу.
ВНИМАНИЕ: Письмо может попасть в папку «СПАМ» — имейте это ввиду.

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

Для активации лицензии мне нужно знать: ваше имя (необязательно) и ваш адрес email (обязательно)
Идентификатор (ID) компьютера (который высвечивается в программе) НЕ требуется.
(этот ID понадобится, если на вашем компьютере нет доступа в интернет, и активация через email не сработает)

К сведению:

если вы произвели оплату через интернет-банк (кроме Альфабанка), отправьте мне скан квитанции о переводе
(т.к. деньги могут идти долго, а активировать программу обычно хочется сразу)

Такие способы оплаты, как Webmoney, QIWI, ЯндексДеньги, — обычно не требуют подтверждения в виде квитанции (ибо деньги приходят моментально)
То же самое касается оплаты через Альфа-Клик, банк Тинькофф, и перевода на карту Сбербанка из интернет-банка Сбербанк-Онлайн.

С момента оплаты, до возможности активации программы, обычно проходит от 2 минут до нескольких часов.
(2 минуты — если вы по почте или или Skype уведомили меня о факте оплаты, и я нахожусь около компьютера,
несколько часов — если я в этот момент сплю или отсутствую возле компа)

Ускорить процесс получения кода активации (до нескольких минут) после оплаты можно 2 способами:
написать мне сообщение в Skype или на почту, или же уведомить меня через форму заказа лицензии на программу (указав способ оплаты) — в этом случае мне придёт СМС-уведомление, на которые я оперативно реагирую в любое время суток.

  • 5449 просмотров

В этом случае, программа обойдётся вам дороже (минимум в 2 раза), и процесс получения лицензии займёт больше времени.

Нажмите кнопку на странице программы, и пролистайте страницу вниз. Там указана стоимость для юр. лиц, и описан порядок покупки.

Почему дороже для юр. лиц?

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

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

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

  • 5456 просмотров

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

ВНИМАНИЕ: описанное касается «обычных» компьютеров (PC), работающих под управлением Windows.
Если у вас ВИРТУАЛЬНАЯ МАШИНА (например, Parallels на Mac), то там переустановка подразумевает создание НОВОГО виртуального КОМПЬЮТЕРА, и придётся каждый раз докупать лицензию на дополнительное рабочее место

Единственный случай, когда вам может потребоваться доплатить — если надо увеличить число компьютеров, на которых установлена программа
(к примеру, вы приобрели лицензию на 4 компьютера, а сейчас понадобилось пользоваться программой ещё на 2 других компьютерах)

Если вы полностью проапгрейдите компьютер (смените бОльшую часть комплектующих) — то в этом случае будет израсходована новая лицензия., т.к. программа будет считать, что это уже новый компьютер.

ВАЖНО: Перенос активаций с одного компьютера на другой (со старого на новый) НЕ ПРЕДУСМОТРЕН.

  • 6561 просмотр

По-умолчанию, применяется активация с использованием email.

После оплаты лицензии, вы получаете письмо (сообщение) примерно следующего содержания:

Можете активировать программу, используя в качестве кода активации
свой адрес электронной почты vasya.pupkin@mail.ru

Когда вы вводите свой email в поле для кода активации (и нажимаете Активировать),
надстройка через интернет соединяется с сервером ExcelVBA.ru, и запрашивает код активации для вашего компьютера.

Если в базе данных найден ваш email (я его туда добавляю после получения оплаты),
то сервер генерирует код активации, и отправляет его вашему компьютеру. Дальше все активируется автоматически.
Если ваш email в базе не найден, или все доступные лицензии уже израсходованы, — программой выводится сообщение о невозможности активации.

Возможные сообщения при попытке активации с использованием email: 

Лицензия для адреса vasya.pupkin@mail.ru не найдена!
(не удаётся активировать программу — вы ошиблись в написании email, или оплату я не получил, или я ещё не успел добавить ваш email в базу данных)

Активация прошла успешно!
(программа активирована впервые, — при этом израсходовалась одна из доступных лицензий;
или же программа активирована повторно (например, после переустановки Windows), лицензии не израсходованы)

Вы израсходовали все доступные лицензии (4)!
(не удаётся активировать программу — вы оплатили 4 лицензии, и ранее активировали надстройку на 4 компьютерах)

Таким образом, на всех ваших компьютерах, вы используете один и тот же код активации — свой адрес почты.

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

Такое бывает крайне редко (например, в офисе разрешен доступ только к определенным сайтам), но тем не менее.
Причин тому может быть несколько: например, ваш антивирус или файрвол блокирует доступ программы к серверу ExcelVBA.ru, или просто на компьютере отсутствует доступ в интернет.

Если интернет есть (сайты открываются) — обычно помогает временное (на несколько минут) отключение антивируса.
Если же доступа в интернет нет, или с антивирусом справиться не удалось, — вам надо получить код активации конкретно для вашего компьютера.
Сделать это можно в личном кабинете
На странице входа в личный кабинет надо ввести email (на который покупалась программа), и вам на почту придет ссылка для входа
(если программа покупалась после 24.09.2016 — то ссылка на личный кабинет присутствует в уведомлении об активации)

На скриншоте показано, что надо нажать в личном кабинете для получения кода активации по ID компьютера (из вкладки АКТИВАЦИЯ окна О ПРОГРАММЕ)

  • 14680 просмотров

Лицензия бессрочная, но с привязкой к компьютерам.
На одном и том же компьютере можно пользоваться сколь угодно долго (точнее, на 2 компьютерах, поскольку по умолчанию при покупке выдаётся 2 активации). Переустановка Windows или Office не влияет на количество доступных активаций (после переустановки Windows нужно будет повторно активировать программу, но при этом дополнительная активация израсходована не будет.

Если же у вас поменялся компьютер, а приобретённые 2 активации уже израсходованы, — то потребуется докупить активацию для нового компьютера.
Стоимость дополнительной активации — от 500 до 800 руб за комп, в зависимости от программы.

Перенос активаций с одного компьютера на другой (со старого на новый) НЕ ПРЕДУСМОТРЕН.

  • 129 просмотров

В общем случае, в обновлениях нет необходимости, если программа корректно работает с вашими файлами, и вас в программе всё устраивает.

Обновления выпускаются в 2 случаях:

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

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

Если же всё работает как надо, вас всё устраивает в программе, — то НЕ обновляйте её.

В большинстве случаев в обновлениях нет чего-то принципиально нового, а вот проблемы с обновлениями могут возникнуть (например, антивирусу не понравится новая версия программы, и он начнёт её удалять)

  • 5626 просмотров

Для включения отключения автоматического поиска обновлений, откройте форму «О программе»,
и на вкладке «Обновления» выберите подходящий вам вариант:

Здесь видно, установлена ли самая последняя версия программы, или доступна новая версия:

При нажатии кнопки «Установить новую версию», программа соединится с сервером ExcelVBA.ru, скачает последнюю версию программы во временную папку, после чего удалит прежнюю версию, заменив старый файл новым.
Новый файл окажется под тем жде именем и в той же папке, где был старый файл.

Процесс обновления обычно занимает несколько секунд (зависит от скорости интернета), — и через 3-10 секунд панель инструментов программы исчезнет на секунду, и появится вновь.
Это означает, что обновление успешно завершилось.

  • 6326 просмотров

Есть несколько причин, по которым обновления программы могут быть недоступны:

Причина: файрвол / брандмауэр запрещает приложению Excel доступ в интернет

Когда может случиться: после переустановки Windows

Как диагностировать: в браузере Microsoft Egde / Internet Explorer сайт ExcelVBA.ru открывается

Решение проблемы: нажимаем —  — , и отключаем его (или, как вариант, добавляем исключение для процесса excel.exe)

Причина: сайт программы (ExcelVBA.ru) не доступен без ВПН, из-за проблем с DNS-сервером

Когда встречается проблема: если вы проживаете в Украине, — с октября 2022 такая проблема там встречается часто

Как диагностировать: в браузере Microsoft Egde / Internet Explorer сайт ExcelVBA.ru НЕ открывается, но если включить ВПН, то сайт доступен.

Решение проблемы: поскольку причина в том, что компьютер не может получить IP адрес сайта ExcelVBA.ru от DNS-сервера, необходимо прописать этот IP адрес в файле hosts.

  1. Определяем IP адрес сайта ExcelVBA.ru, нажав —  (или комбинацию клавиш  +  ),
    и введя команду ping ExcelVBA.ru -t
    Видим окно со строками типа Ответ от 88.99.25.214: число байт=32 время=72мс TTL=55
    где 88.99.25.214 — и есть искомый IP адрес сайта

    Текущий IP сайта ExcelVBA.ru: 88.99.25.214

  2. Находим файл с именем hosts (без расширения) в папке c: windows system32 drivers etc , и открываем этот файл в Блокноте
    (как вариант, запускаем Блокнот от имени администратора, жмём в нём в меню Файл — Открыть, вставляем туда путь c:windowssystem32driversetchosts и нажимаем кнопку Открыть)
  3. Добавляем запись в конец файла в следующем формате: IP-адрес сайта, пробел, название сайта: 
    88.99.25.214 excelvba.ru
  4. Сохраняем изменения в файле
  5. Закрываем Excel, запускаем снова, и проверяем
    Заодно теперь и во всех браузерах сайт ExcelVBA.ru станет доступным без ВПН (может потребоваться перезапустить браузер)

Причина: сайт программы (ExcelVBA.ru) временно не доступен

Когда может случиться: в любой момент, но такое бывает очень редко (суммарно не более 2 часов за год)

Как диагностировать: в любом браузере сайт ExcelVBA.ru НЕ открывается, даже через ВПН (в том числе и в смартфоне, с мобильного интернета)

Решение проблемы: подождать несколько минут, пока сайт ExcelVBA.ru не начнёт открываться в браузере.

  • 6078 просмотров

Есть несколько причин, по которым панель инструментов может не появиться в Excel на вкладке НАДСТРОЙКИ

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

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

Решение проблемы: перед запуском скачанного файла надстройки, необходимо:

  • найти скачанный файл надстройки в папке (обычно это папка «Загрузки»)
  • щелкнуть правой кнопкой мыши на файле — Свойства — ставим галочку Разблокировать ОК
  • и только после этого запускать

Это связано с недавним изменением политики безопасности в приложениях Office (скачанные из интернета файлы с макросами, не будучи предварительно разблокированными, запускаются без макросов)

Причина: антивирус повредил файл надстройки при проверке

ЭТО НАИБОЛЕЕ ЧАСТО ВСТРЕЧАЮЩАЯСЯ ПРОБЛЕМА В 2018 — 2020 ГОДАХ
Даже если вам кажется, что у вас нет антивируса, наверняка он есть, — например, встроенный в систему Защитник Windows (он же Windows Defender)

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

Решение проблемы: надо добавить мой сайт ExcelVBA.ru и расширение файла .xla в список исключений антивируса,
после чего заново скачать надстройку с сайта.

ПОДРОБНАЯ ИНСТРУКЦИЯ ПО РЕШЕНИЮ ПРОБЛЕМ С АНТИВИРУСОМ

ВАЖНО: убедитесь, что антивирус никак не реагирует на скачивание и запуск надстройки.
Если какое-то предупреждение от антивируса выскочило — с вероятностью 90%, антивирус повредил файл надстройки, и надстройка не запустится.

Причина: в настройках безопасности Excel заданы ограничения

Когда может случиться: в новых версиях Office такое иногда имеет место быть

Решение проблемы: нажимаем в меню Excel —  — , и потом справа кнопку .
В появившемся окне в левом столбце есть пункты и .
По очереди заходим в каждый из этих разделов, и ставим галочки «Отключить все надёжные расположения» и «Отключить надёжные документы».
Теперь закрываем Excel, и пробуем снова запустить надстройку.
После этого Excel не будет считать надстройку ненадежной, только потому что она расположена не в той папке.

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

Когда может случиться: при повторных запусках (когда до этого всё работало)

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

Причина: макросы в Excel отключены
Excel отключает все макросы во всех файлах, — иногда с уведомлением, а иногда и без него.

Когда может случиться: при первом запуске скачанной надстройки
Встречается редко. По умолчению, макросы отключены «с уведомлением», т.е. Excel спрашивает, нужно ли включить макросы для каждого запускаемого файла с макросами. Но даже когда вы нажимаете кнопку «Включить макросы» в этом уведомлении, то следом может появиться окно типа «Обнаружены вредоносные макросы», и надстройка не запустится.

Решение проблемы: нужно включить макросы в Excel
Нажимаем в меню Excel —  — , и потом справа кнопку .
В появившемся окне в левом столбце выбираем пункт , и справа выбираем опцию «Включить все макросы»

  • 45766 просмотров

Симптомы проблемы:

  1. при запуске Excel, выводится сообщение типа такого:
    К сожалению, нам не удалось найти файл Parser.xla. Возможно, он был перемещен, переименован или удален.
  2. не получается скачать файл надстройки.
    В браузере выводится сообщение «Ошибка при скачивании файла»
  3. появляется всплывающее уведомление, что в файле …xla обнаружены угрозы
    (или любое другое уведомление любого антивируса, относящееся к файлу надстройки)
     

Если при скачивании вы видите сообщение от том, что Chrome заблокировал файл как опасный, то тут проблема не в антивирусе, а в излишне заботливом браузере, который недавно (в 2019 году) обзавелся встроенной системой безопасности.

В этом случае, скачайте файл другим браузером (например, при помощи Internet Explorer)

Причина проблемы:

антивирус нашел в файле якобы угрозу, и удалил файл надстройки (или «вылечил» его, тем самым повредив)

Если вы думаете, что у вас нет антивируса, — это не так.
Он у вас есть. Это встроенный в систему Защитник Windows (он же Windows Defender)
А скачивание файла с сайта блокирует один из компонентов Защитника Windows, так называемый Smart Screen

Как решить проблему:

  1. добавить мой сайт ExcelVBA.ru и расширение файла .xla в список исключений антивируса
    Как добавить надстройки в исключения Защитника Windows (в 95% случаев, проблема именно в нём)
  2. заново скачать файл надстройки с сайта, поместить его в ту же папку где он был раньше, разблокировать, и запустить
     

ВАЖНО: скачивать надо в браузере INTERNET EXPLORER!

(браузеры на движке Chromium с 2020 года используются встроенный «антивирус» от Google, который может блокировать скачивание)

ВАЖНО: антивирус не должен никак реагировать на скачивание и запуск файла надстройки!

Если антивирус среагировал (выскочило какое-то окно про угрозы, и т.п.) — начинаем всё заново, т.к. антивирус повредил надстройку, и она не будет запускаться.

Примечания:

  • Работоспособность программы от произошедшего не нарушится.
    Антивирус удаляет только файл надстройки, который всегда можно скачать здесь на сайте.
    Никакие настройки программы при этом затронуты не будут (они хранятся в реестре Windows или в отдельной папке, антивирусу настройки не интересны)
  • Активировать программу заново не потребуется
    Активация хранится в самой Windows, а не в файле надстройки, — так что, после запуска заново скачанного файла надстройки, программа останется активированной
  • Не забудьте разблокировать файл надстройки после скачивания
    Когда скачиваете файл на странице программы, появляется всплывающее окно, где написано и показано, как разблокировать.
  • Важно поместить программу в ту же папку, где она была до этого (некоторые мои программы ищут папку с настройками относительно собственного расположения)
    По умолчанию, все надстройки устанавливаются на Рабочий стол.
    Можно сначала разблокировать, а потом перенести файл в нужную папку, а можно наоборот.
    Главное, что разблокировать и переместить в папку нужно ДО запуска надстройки
  • Как добавить сайт ExcelVBA.ru и расширение файла .xla в исключения антивируса, читайте в справке по своему антивирусу.
    Я не спец по разным антивирусам, как там что настраивать — при всём желании подсказать не смогу.
    Как добавить мои программы в исключения Защитника Windows (этого в большинстве случаев будет достаточно)
  • От большинства антивирусов никакой пользы нет.
    Я, например, ими вообще не пользуюсь (потому, у меня всё работает годами без сбоев)
    Если удалите антивирус (Windows Defender Firewall), проблема исчезнет
  • Проблемы в основном с бесплатными антивирусами.
    Разработчики платных антивирусов посерьезнее относятся к работе, и нормальные антивирусы не ругаются на мои программы
    Если всё же хотите нормальный антивирус, установите Касперского (есть бесплатная версия)
  • Я уже устал писать в Microsoft насчёт ложных сработок.
    Они каждый раз проверяют (автоматически), и сообщают, что вирус найден.
    Я пишу им очередное нецензурное письмо по результатам проверки, они проверяют вручную, убирают сработку, и советуют подождать несколько дней, пока базы защитника Windows обновятся.
    Скриншот результата проверки моей программы техподдержкой Windows Defender
    История повторяется каждые 2 месяца (каждый раз что-нибудь новое обнаруживает их чудо-антивирус)
    От меня тут ничего не зависит.
    Тот факт, что я часто выпускаю новые версии (обновления), только усугубляет проблему.
  • смотрите также другие причины, почему надстройка может не запускаться

Решение проблемы с Защитником Windows (Windows Defender)

На большинстве компьютеров, вместе с Windows установлен и Защитник Windows, — он и даёт ложную сработку, мешая скачать и запустить файл надстройки.
Решается проблема в несколько кликов. Достаточно добавить тип файла .xla в список исключений Защитника Windows.

Порядок действий:

  1. В меню Пуск ищем пункт Центр безопасности Защитника Windows

    Если не нашли, то можно сделать иначе: открыть панель управления (нажав на шестеренку над кнопкой Пуск), перейти в раздел Обновления и безопасность, слева в столбце выбрать Безопасность Windows, и справа нажать кнопку Открыть Центр безопасности Защитника Windows:

  2. В центре безопасности, выбираем раздел Защита от вирусов и угроз, а в нём подраздел Параметры защиты от вирусов и угроз:

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

  4. Нажимаем Добавить исключение, выбирая опцию Тип файла:

  5. Вводим расширение xla, и нажимаем кнопку Добавить:


     

  6. Заново скачиваем файл надстройки с сайта
    (если ранее скачивали, — удаляем старый файл, он повреждён антивирусом)
    Не забываем разблокировать файл после скачивания.
     
  7. Теперь можно запускать файл надстройки. Всё должно работать.
  • 17381 просмотр

В этом случае просто внимательно прочитайте, что написано в сообщении.

Обычно такое сообщение выводится, если вы взломали надстройку
(или многократно пытались обойти её защиту, — например, подбирая код активации)

Если вы ничего такого не делали (например, только что начали пользоваться программой), а сообщение появляется,
то сразу свяжитесь со мной любым способом (Скайп, эл.почта), сообщив о появлении сообщения, и указав ID своего компьютера (его можно посмотреть на форме «О программе» на вкладке «Активация»)

В этом случае я проверю, почему такое происходит (возможно, один из взломщиков ранее пользовался надстройкой на компьютере с таким же ID), и уберу ваш ID из «черного списка» (после чего программа будет работать, без всяких лишних сообщений)

Если вы намерены пользоваться надстройкой в дальнейшем (оплатив лицензию),
то при оплате лицензии обязательно сообщите мне о появлении подобных сообщений

(чтобы я разблокировал работы программы на вашем компьютере)

Никаких особых санкций к «хакерам», пытавшимся обойти защиту моих программ, не предусмотрено, так что смело обращайтесь)

  • 4974 просмотра

Через 1-2 секунды после запуска надстройки, Excel зависает, и никак не реагирует на действия пользователя.

Эта проблема проявляется только при использовании старых версий надстроек, купленных до конца 2016 года
(новые версии всех моих надстроек лишены проблемы с зависанием)

Причина: переезд на другой сервер 16 мая 2018 года. старые версии программ зависают при проверке обновлений

Решение — обновить надстройку ВРУЧНУЮ до новой версии:

  1. закрыть Excel (если он напрочь завис, то снять задачу через диспетчер задач)
  2. найти в папке (куда была установлена программа) старый файл надстройки
    Обычно файл имеет имя вида НазваниеНадстройки_vXXXX.xla (где вместо XXXX — номер версии из 4 цифр)
    Примеры имени файла: FillDocuments_v2479.xla, PastePictures_v3239.xla, Unification_v1229.xla, Parser_v1269.xla, Lookup_v1059.xla
  3. удалить этот старый файл (если несколько старых надстроек в автозапуске — удалить все)
  4. убедиться, что Excel стал запускаться без зависания
  5. на место старого файла, скачать новую версию программы с сайта
    Выберите нужную из списка всех надстроек, откройте страницу программы, — там справа есть зеленая кнопка для скачивания:

     
  6. не забудьте разблокировать файл после скачивания
    Инструкция, как скачать и разблокировать файл надстройки
    (на некоторых компьютерах разблокировка не требуется)
  7. запустите новый файл надстройки (двойным щелчком по файлу)
    Должна появиться панель инструментов (если вы ранее уже запускали новую версию программы), или диалоговое окно установки надстройки (выбор языка и папки для установки)
    На этапе установки новой версии, можно сразу ввести email, на который вы покупали программу, — тогда новая версия сразу активируется.
    При активации новой версии, новые активации расходоваться не будут
  8. Если с активацией новой версии возникли проблемы, — пишите мне в скайп или на почту, не забывая указать email, на который покупалась программа

PS: В плане настроек, все новые версии программ обратно совместимы со старыми версиями, так что проблем не будет.
(кроме Labels — в новой версии, шаблоны храняться в отдельных файлах, а не внутри надстройки, как раньше)
Кроме того, в новых версиях обычно больше возможностей, и меньше ошибок

PPS: При переходе на новую версию движка, в конце 2016 года, все надстройки поменяли и механизм обновления, — потому, в старых версиях не отображались обновления. Автообновление настроек работало до этого перехода, и работает сейчас, на новых версиях, но вот обновиться со старой версии движка до новой можно только вручную.

Если вы удалили старую версию файла, а Excel всё равно зависает, или же вы не можете найти, в какой папке находится старая версия надстройки, подключенная в Excel, — вам поможет макрос из вложения к статье.
Запустив прикреплённый файл Word (ВАЖНО: на вопрос, включить макросы или нет, отвечаем ВКЛЮЧИТЬ), вы увидите список путей к файлам, которые находятся в автозапуске Excel (подключены как надстройки)
Этот макрос запустит Excel без надстроек (чтобы ничего не зависало при запуске), и выведет список путей к надстройкам Excel

  • 5476 просмотров

Симптомы проблемы:

  1. панель инструментов надстройки появляется, на кнопки на ней не нажимаются
    (при нажатии на кнопки О ПРОГРАММЕ или НАСТРОЙКИ ничего не происходит)
  2. Если в меню есть выпадающие списки, то списки эти раскрываются, но кнопки из этих списков тоже не работают

Причина проблемы:

Проблема вызвана установленной на компьютере программой Dropbox.
Она как-то внедряется в Excel, и ломает функционал панелей инструментов на вкладке НАДСТРОЙКИ

Как решить проблему:

Вариант 1: Обычно помогает ПЕРЕИМЕНОВАНИЕ файла надстройки (при закрытом Excel)
Например, переименуйте файл FillDocuments.xla в FillDocuments1.xla, и внезапно все станет работать (почему так происходит — не знаю)

Вариант 2: Удалите программу Dropbox

  • 447 просмотров

Решение проблемы с Защитником Windows (Windows Defender)

На большинстве компьютеров, вместе с Windows установлен и Защитник Windows, — он и даёт ложную сработку, мешая скачать и запустить файл надстройки.
Решается проблема в несколько кликов. Достаточно добавить тип файла .xla в список исключений Защитника Windows.

Порядок действий:

  1. В меню Пуск ищем пункт Центр безопасности Защитника Windows

    Если не нашли, то можно сделать иначе: открыть панель управления (нажав на шестеренку над кнопкой Пуск), перейти в раздел Обновления и безопасность, слева в столбце выбрать Безопасность Windows, и справа нажать кнопку Открыть Центр безопасности Защитника Windows:

  2. В центре безопасности, выбираем раздел Защита от вирусов и угроз, а в нём подраздел Параметры защиты от вирусов и угроз:

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

  4. Нажимаем Добавить исключение, выбирая опцию Тип файла:

  5. Вводим расширение xla, и нажимаем кнопку Добавить:


     

  6. Заново скачиваем файл надстройки с сайта
    (если ранее скачивали, — удаляем старый файл, он повреждён антивирусом)
    Не забываем разблокировать файл после скачивания.
     
  7. Теперь можно запускать файл надстройки. Всё должно работать.
  • 76 просмотров

При открытии файла программы, выскакивает сообщение
Нет доступа к файлу «<название>.xla». Возможно, файл повреждён, находится на сервере, который не отвечает на запросы, или доступен только для чтения.

Основная причина такой ошибки, — файл был удалён или повреждён антивирусом.

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

Решение:

  1. добавить исключения в антивирус
  2. скачать заново надстройку с сайта
  3. ВАЖНО: скачивать надо в браузере INTERNET EXPLORER!

    (браузеры на движке Chromium (Microsoft Edge / Chrome / Opera / Firefox) с 2020 года используются встроенный «антивирус» от Google, который может блокировать скачивание)

  • 1336 просмотров

При открытии файла программы, выскакивает сообщение
Compile error in hidden module: mod_*

Основная причина такой ошибки, — вы пытаетесь запустить надстройку в Excel для MAC

Надстройки работают только в Excel и только под Windows, — потому, если вы являетесь счастливым обладателем Мака, и хотите использовать мои надстройки, — установите Parallels, и запускайте надстройки из-под Windows
(проверено: на Маке, под Parallels, всё работает)

Возможна другая причина ошибки, — вы используете старую версию Office (например, Excel 2002/XP)

Все надстройки гарантированно работают (если это не оговорено отдельно) в версиях Excel, начиная с 2003.
Установите офисный пакет посвежее, — и всё заработает.

Если эта ошибка появляется в надстройке Parser — ознакомьтесь с этой инструкцией

Редко, но может быть и другая причина, — я допустил ошибку в программе.

Обычно я устраняю подобные проблемы в течение нескольких минут (заливая на сайт исправленную версию файла), — но, бывает, пользователи успевают скачать некорректный файл.
Если у вас используется Windows и Excel версии от 2003 и выше, а ошибка «Compile error in hidden module», тем не менее, появляется, — сразу сообщите мне об этом любым способом (по Скайпу или почте)

  • 20265 просмотров

Если при попытке открытия (запуска) надстройки выскакивает сообщение
«Система Office обнаружила проблему с этим файлом»,
попробуйте сделать следующее:

  • скачиваете «заплатку» от Microsoft по этой ссылке:
    http://www.microsoft.com/ru-ru/download/confirmation.aspx?id=2807
  • запускаете скачанный файл OFV.exe при закрытом Excel
  • пробуете снова открыть (запустить) надстройку

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

PS: Если не поможет, то попробуйте такой вариант

  • 14742 просмотра

При открытии файла программы появляется сообщение 
Для этой книги недоступны проект VBA, элементы управления ActiveX и остальные программные средства

Если вы увидели такое сообщение, — попробуйте запустить любой другой файл с макросами (например, любую другую программу с моего сайта)

Если и другие файлы с макросами вызывают такую ошибку, — значит, у вас не установлен (или некорректно установлен) компонент Office «Microsoft Visual Basic»

Такое бывает, когда при установке Office пользователь сам выбирает нужные ему компоненты, часто отключая пункт «средства Office»,
среди подпунктов которого и находится «Microsoft Visual Basic» — модуль поддержки макросов в офисных приложениях.

Решается проблема просто, — надо доустановить указанный компонент.
Для этого, заходим в Панель управления — Установка и удаление программ, находим и выделяем в списке программ Microsoft Office, нажимаем кнопку Изменить, — и в разделе «средства Office» для компонента «Microsoft Visual Basic» выбираем вариант «Запускать с моего компьютера».
Несколько минут, — и ваш Excel научится понимать макросы. После этого, ошибка перестанет появляться.

Если же другие файлы с макросами нормально работают (эта ошибка не появляется), — значит, используемый вами файл повреждён.

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

  • 1986 просмотров

С этой проблемой сталкиваются пользователи Windows 10, у которых в настройках Windows включена опция «Use Unicode UTF-8 for worldwide language support» / «Использовать Юникод (UTF-8) Для поддержки языка во всем мире».
На других версиях Windows такая ошибка не встречалась.
 

Симптомы проблемы:

Если надстройка не активирована (пробный период), при запуске надстройки выскакивает сообщение «Uninstalling cancelled».
При нажатии кнопки ОК на сообщении, оно спустя пару секунд появляется повторно.

Если надстройка активирована (куплена лицензия), при нажатии кнопки «О программе» каждый раз появляется диалоговое окно установки программы.
 

Причина проблемы:

Программа хранит свои настройки в реестре Windows, и при считывании настроек Windows использует неверную кодировку.
По этой причине программа не понимает, что ранее было записано в настройках, и выдаёт ошибку (или повторно запускает установку).
 

Решение проблемы:

Необходимо снять одну галочку в региональных настройках Windows.

Для этого:

В меню нажимаем  —  — вкладка  — кнопка .
В появившемся окне выбираем текущий язык системы «Русский», и снимаем галочку «Использовать Юникод (UTF-8) Для поддержки языка во всем мире».

В англоязычной Windows это находится в меню  —  — —  — вкладка  — кнопка 
В появившемся окне выбираем Current system locale «Russian», и снимаем галочку «Use Unicode UTF-8 for worldwide language support».

После этого надо перезагрузить компьютер

  • 1669 просмотров

Даже если вы не умеете программировать, то существует множество мест (книги, сайты, форумы), где можно найти готовый код макросов на 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
  • Надстройка для автоматизированного заполнения договоров в word
  • Надстройка для word число прописью
  • Надстройка для word скачать бесплатно
  • Надстройки для excel как запустить