Надстройки для excel лента

100-0-создание надстройки Excel лого

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

Оригинал статьи находится по ссылке

Данная статья делится на 5 простых шагов:

Шаг 1: Загрузить бесплатный шаблон (Я сделал всю рутину, которая отнимает время)

Шаг 2: Связать ваш макрос и описание с кнопкой на ленте

Шаг 3: Протестировать кнопку и убедиться, что она работает

Шаг 4: Выбрать иконку для кнопки (Micosoft предлагает их тысячи бесплатно)

Шаг 5: Сохранить ваш шаблон как надстройку

К чему мы должны прийти в конечном итоге:

100-13-трансформация меню excel

Шаг 1: Загрузить шаблон

Я создал шаблон, в котором реализованы все основные рутинные операции. Этот шаблон позволит избежать траты вашего времени на создание сложного кода. Чтобы скачать его, щелкните по ссылке.

Шаг 2: Связываем ваш макрос

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

  1. Скрываем не используемые группы и кнопки.

Открываем редактор Visual Basic (с помощью нажатия кнопок Alt + F11). Так как мы будем создавать ленту с одной единственной кнопкой, а шаблон содержит 50 кнопок, нам необходимо скрыть остальные 49. Чтобы сделать это, переходим в модуль RibbonSetup в программу GetVisible. Вы увидите Select Case цикл, который проходит через каждую кнопку и указывает ленте, будет ли кнопка видимой или скрытой. Так как мы ходим оставить только одну кнопку видимой, меняем аргумент переменной MakeVisible на False у всех кнопок, кроме одной.

100-1-меняем код надстройки

  1. Добавляем код макроса

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

100-2-код вставка значений

Возвращаемся в модуль RibbonSetup, переходим к процедуре RunMacro. Добавляем имя макроса, который мы добавили до этого, к соответствующей кнопке (необходимо переписать DummyMacro).

100-3-меняем название макроса

  1. Добавляем надпись подсказки к макросу

Хороший способ помочь пользователям вспомнить для чего кнопка нужна – добавить всплывающую подсказку. Подсказка – это надпись, которая появляется рядом с кнопкой, когда на нее наводят курсор мыши. Вы постоянно видите эти надписи у нормальной ленты, но могли не обращать внимания на них. Чтобы добавить подсказку к нашей кнопке, переходим в процедуру GetScreentip и меняем аргумент у переменной Screentip на текст, который бы описывал назначение данной кнопке. В нашем случае напишем Вставить только значения.

100-4-добавить подсказку

  1. Добавляем имена вкладки, группы и кнопки

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

К примеру, назовем нашу вкладку Company, нашу группу PasteSpecial, а кнопку Вставить значения. Из рисунка ниже понятно, что необходимо поменять аргумент переменной Labeling на текcт, который мы хотим отобразить на ленте.

100-5-добавить надписи

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

Шаг 3: Проверка работоспособности

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

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

Шаг 4: Выбор иконок

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

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

100-6-вставить иконку

Как получить названия иконок?

Есть несколько ресурсов, где можно получить названия иконок для ленты, но лично я предпочитаю Excel файл, созданный компанией Microsoft, под названием Office 2007 Icons Gallery. В этом файле отображены все иконки, имеющиеся в наличии и находятся во вкладке Разработчик в 9 папках на ленте. Если вы наведете курсор мыши на иконку, программа отобразит всплывающую подсказку с названием иконки. Вам необходимо скопировать это имя дословно (с учетом регистра) и добавить его в макрос процедуры GetImage, как мы делали ранее.

100-7-поиск названия иконки

Как изменить размер иконки?

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

Чтобы изменить размер иконки, перейдите в процедуру GetSize и измените текст у соответвующей кнопки на Large или Small.

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

100-8-размер кнопки

Шаг 5: Сохранить файл как надстройку

Последний шаг, который необходимо сделать – это сохранить наш файл как надстройку. Надстройки Excel имеют расширение .xlam, так что убедитесь, что вы выбрали именно этот формат, когда будете сохранять книгу. После того, как вы сохранили файл надстройки, вы можете закрыть шаблон (.xlsm формат) и установить новую надстройку в программу. Для этого открываем любой файл Excel, переходим во вкладку Файл в пункт Параметры. Перед нами появится диалоговое окно Параметры Excel, переходим во вкладку Надстройки. Щелкаем кнопку Перейти, в появившемся окне ставим галочку напротив названия нашей надстройки и жмем кнопку OK.

100-9-надстройки excel

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

100-10-новая вкладка

Мы закончили. Всего за 5 шагов, мы создали надстройку для ленты Excel, которую сможет использовать любой пользователь. Надеюсь, что я смог убедить вас в том, что создание надстроек не является сложным занятием. Теперь вы сможете применить полученные навыки по созданию надстроек для того, чтобы поразить вашего руководителя и даже руководителя руководителя.

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

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

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

Если макросов много, а используются они часто более рационально будет
создание собственной надстройки Excel — отдельного файла
особого формата (xla – Excel2003, xlam – Excel2010 и старше), содержащего
все макросы.

Плюсы такого подхода очевидны:

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

Рассмотрим процесс создания своей собственной надстройки для Excel на примере Excel 2010.

1. Создать файл надстройки

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

По умолчанию Excel хранит надстройки в папке C:Users<Учетная запись пользователя
>AppDataRoamingMicrosoftAddIns
, но можно указать и любую другую
папку.

2. Подключить созданную надстройку

Теперь созданную нами на прошлом шаге надстройку ExcelPlus надо
подключить к Excel. Для этого в меню Файл — Параметры — Надстройки, жмем на кнопку Перейти в нижней части окна:

Если вы скопировали файл надстройки в папку по умолчанию, то новая
надстройка ExcelPlus должна появиться в списке доступных
надстроек:

Либо в этом окне жмем Обзор и указываем
положение нашего файла надстройки.

Ставим флажок напротив названия настройки и жмем ОК.

3. Добавить макросы в надстройку

Теперь надстройка подключена к Excel, но она не может работать, так как в
ней отсутствуют макросы. Добавим макрос в надстройку. Для этого откроем
редактор VBA по Alt+F11 или кнопкой Visual Basic на
вкладке Разработчик:

В левом верхнем углу редактора должно быть окно Project

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

В этом модуле будет хранится VBA-код макросов надстройки.

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

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

Такие макросы как FindCyr называют еще процедурами. Макросы в составе надстроек можно запустить также как
обычные макросы:

  • при помощи сочетания клавиш Alt+F8, а затем нажать кнопку Выполнить
    (макросы надстроек здесь не видны. Несмотря на это, мы можем ввести имя нашей процедуры в поле Имя макроса);
  • назначить сочетание клавиш для быстрого запуска макроса — кнопка Параметры в окне Макрос
  • создать кнопку для нашего макроса на панели быстрого доступа в левом верхнем углу окна.

Подробнее и с картинками о способах запуска макроса написано здесь.

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

4. Добавить функции в надстройку

Кроме макросов-процедур, существуют еще и макросы-функции или
пользовательская функция. Создадим в нашей надстройке еще один
модуль меню Insert — Module и вставим туда код функции,
которая находит сумму ячеек нужного цвета:

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

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

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

У созданных пользователем функций отсутствует описание функции в нижней
части окна. Чтобы его добавить, нужно:

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

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

5. Создать вкладку надстройки в интерфейсе Excel

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

Мы будем писать код вкладки с помощью бесплатной программы для редактирования XML

Ribbon XML Editor

  1. Закрыть все окна Excel.
  2. Запустить программу Ribbon XML Editor и открыть в ней файл надстройки Excel Plus.xlam.
  3. При помощи кнопки tabs в левом верхнем углу добавить
    заготовку кода для новой вкладки
  4. В кавычки по стрелке нужно вписать id — любые уникальные
    идентификаторы вкладки и группы, а в label — названия
    вкладки и группы кнопок на ней:
  5. При помощи кнопки button на панели слева добавляем
    заготовку кода для кнопки и дописываем к ней:
  6. Id – идентификатор кнопки;

    label — текст на кнопке;

    imageMso — условное название изображения на кнопке(иконка). Иконку можно выбрать из
    большого числа изображений, щелкнув по кнопке:

    — onAction
    — имя процедуры обратного вызова — специального короткого макроса, который
    будет запускать основной макрос FindCyr. Назвать эту
    процедуру можно, например, FindCyrStart.

  7. Проверить правильность сделанного с помощью кнопки с зеленой галочкой
    сверху на панели инструментов. Рядом с ней нажмите на кнопку с дискетой для
    сохранения изменений:
  8. Закрыть Ribbon XML Editor
  9. Открыть Excel, зайти в редактор VBA по Alt+F11 и добавить к нашему
    макросу процедуру вызова FindCyrStart, для запуска
    основного макросы поиска кириллицы.
  10. Сохранить изменения в редакторе VBA и в Excel проверить результат:


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

Яндекс.Метрика

Создаваемая панель инструментов

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

На панель можно добавлять как обычные кнопки, так и раскрывающиеся выпадающие списки, подменю, текстовые поля.

Формирование панели инструментов происходит при загрузке файла, при закрытии же его — созданная панель скрывается:

Private Sub Workbook_Open()
    ФормированиеПанелиИнструментов
End Sub
 
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    GetCommandBar(PROJECT_NAME, True).Visible = False
End Sub

Основной код модуля:

' ВНИМАНИЕ! Наличие константы PROJECT_NAME ОБЯЗАТЕЛЬНО!
Public Const PROJECT_NAME = "Addin CommandBar"
 
' список допустимых элементов управления на пользовательской панели инструментов
Public Enum CONTROL_TYPES
    ct_BUTTON = msoControlButton
    ct_TEXTBOX = msoControlEdit
    ct_COMBOBOX = msoControlComboBox
    ct_DROPDOWN = msoControlDropdown
    ct_POPUP = msoControlPopup
End Enum
 
Function Add_Control(ByRef Comm_Bar, ByVal ControlType As CONTROL_TYPES, ByVal B_Face As Integer, _
                     ByVal On_Action As String, ByVal B_Caption As String, _
                     Optional ByVal Button_Style As MsoButtonStyle = msoButtonIcon, _
                     Optional ByVal Begin_Group As Boolean = False, _
                     Optional Tag As String = "") As CommandBarControl
    ' добавляет контролы в меню Comm_Bar, возвращает ссылку на созданный пункт меню
    On Error Resume Next
    Set Add_Control = Comm_Bar.Controls.Add(Type:=ControlType, Temporary:=True)    ' создаём новый контрол
    With Add_Control
        If B_Face > 0 And ControlType = ct_BUTTON Then .FaceId = B_Face    ' назначаем кнопке иконку
        .Tag = Tag: .OnAction = On_Action: .Caption = B_Caption    ' параметры контрола
        .BeginGroup = Begin_Group    ' добавляем разделитель (при необходимости)
        If ControlType = ct_BUTTON Then .Style = Button_Style
    End With
End Function

Function GetCommandBar(ByVal CommandBarName As String, Optional ByVal Clean As Boolean = False, _
                       Optional ByVal Position As MsoBarPosition = msoBarFloating) As CommandBar
    On Error Resume Next: Err.Clear
    ' получаем ссылку на пользовательскую панель инструментов
    Set GetCommandBar = Application.CommandBars(CommandBarName)
    If Err.Number Then    ' если панель не найдена - создаём её
        Set GetCommandBar = Application.CommandBars.Add(CommandBarName, Position, False, True)
    End If
    If Clean Then    ' перебираем на ней все элементы, и удаляем их
        For Each cbc In GetCommandBar.Controls: cbc.Delete: Next
    End If
    GetCommandBar.Visible = True    ' отображаем панель инструментов
End Function
 
 
Sub УдалениеПанелиИнструментов()
    GetCommandBar PROJECT_NAME, True
End Sub
 
Sub ФормированиеПанелиИнструментов()
    On Error Resume Next: Application.ScreenUpdating = False
    ' получаем ссылку на пользовательскую панель инструментов
    Set AddinMenu = GetCommandBar(PROJECT_NAME, True)
 
    ' добавление новых элементов управления на панель
    Add_Control AddinMenu, ct_BUTTON, 271, "CreateBackup", "Create Backup and Save", , True
    Add_Control AddinMenu, ct_BUTTON, 1099, "MainMacro", "Запуск основного макроса", msoButtonIconAndCaption, True
 
    Add_Control(AddinMenu, ct_TEXTBOX, 0, "ComboChanged", "Курс EURO", , True, "EURO").Text = "Курс EURO"
    Add_Control(AddinMenu, ct_TEXTBOX, 0, "ComboChanged", "Курс USD", , False, "USD").Text = "Курс USD"
    Add_Control AddinMenu, ct_BUTTON, 395, "GetRatesFromInternet", "Получить курс с сайта Центробанка", False
 
    Dim combo As CommandBarControl    ' добавляем выпадающий список
    Set combo = Add_Control(AddinMenu, ct_COMBOBOX, 548, "ComboChanged", "Выбор продукции", , True, "ПРОДУКЦИЯ")
    ' добавляем позиции (пункты) в выпадающий список
    For i = 1 To 10: combo.AddItem "Позиция " & i: Next i
    combo.Text = "выберите позицию"    ' текст комбобокса по умолчанию
    combo.Width = 145    ' изменяем ширину выпадающего списка на панели инструментов

    Add_Control AddinMenu, ct_BUTTON, 280, "RenamePhotoes", "Переименование фотографий", , True
 
    Dim popup As CommandBarControl    ' добавляем выпадающее меню
    Set popup = Add_Control(AddinMenu, ct_POPUP, 548, "", "Доп. макросы", , True)
    For i = 1 To 5    ' добавляем пункты в подменю popup
        Add_Control popup, ct_BUTTON, 70 + i, "AdditionalMacros", "Дополнительный макрос " & i, False, , CStr(i)
    Next i
 
    Add_Control AddinMenu, ct_BUTTON, 222, "EditWorkPlan", "Перейти к редактирования техзадания на программу", , True
 
    Add_Control AddinMenu, ct_BUTTON, 1088, "SetIsAddinAsTrue", "Скрыть листы файла программы", , True
    Add_Control AddinMenu, ct_BUTTON, 1087, "SetIsAddinAsFalse", "Отобразить листы файла программы", , False
 
    Add_Control AddinMenu, ct_BUTTON, 548, "ShowFormSettingsPage", "Настройки", , True
 
End Sub

Sub SetIsAddinAsFalse()
    On Error Resume Next: ThisWorkbook.IsAddin = False
End Sub
 
Sub SetIsAddinAsTrue()
    On Error Resume Next: ThisWorkbook.IsAddin = True
End Sub
 
 
Sub CreateBackup()
    ' сохраняет файл надстройки, и создаёт резервную копию файла в специальной папке
    On Error Resume Next
    If Not ThisWorkbook.Saved Then ThisWorkbook.Save  ' сохранение файла
    ' формируем путь к папке для резервных копий программы
    BackupsPath = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, PROJECT_NAME & " Backups")
    ' создаём папку, если она не существует
    MkDir BackupsPath
    ' формируем путь для файла резервной копии
    Filename = PROJECT_NAME & "_BACKUP_" & Format(Now, "DD-MM-YYYY__HH-NN-SS") & ".xls"
    ' создаём копию файла надстройки
    ThisWorkbook.SaveCopyAs BackupsPath & Filename
End Sub

Sub ComboChanged()    ' срабатывает при изменении значения в комбобоксе или текстбоксе
    On Error Resume Next
    НазваниеКомбобокса = Application.CommandBars.ActionControl.Tag
    ТекстКомбобокса = Application.CommandBars.ActionControl.Text
    MsgBox "Новое значение: """ & ТекстКомбобокса & """", _
           vbInformation, "Изменения в полесписке """ & НазваниеКомбобокса & """"
End Sub
Sub AdditionalMacros()    ' срабатывает при нажатии одной из кнопок в подменю
    On Error Resume Next
    НомерМакроса = Application.CommandBars.ActionControl.Tag
    MsgBox "Параметр макроса = """ & НомерМакроса & """", vbInformation, "Запущен макрос из подменю"
End Sub
  • 79477 просмотров

Не получается применить макрос? Не удаётся изменить код под свои нужды?

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

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

Последнее обновление Ноя 12, 2021


  • Microsoft Excel – самый известный в мире инструмент для работы с электронными таблицами.
  • В приведенном ниже руководстве показано, что делать, чтобы восстановить панель инструментов MS Excel.
  • Чтобы узнать больше об этом удивительном продукте, посетите наш специальный центр Excel.
  • Если вам нужно узнать больше обо всем программном наборе, посетите нашу страницу с руководствами по Excel.

Чтобы исправить различные проблемы с ПК, мы рекомендуем Restoro PC Repair Tool: это программное обеспечение исправит распространенные компьютерные ошибки, защитит вас от потери файлов, вредоносных программ, сбоев оборудования и оптимизирует ваш компьютер для максимальной производительности. Исправьте проблемы с ПК и удалите вирусы прямо сейчас, выполнив 3 простых шага:

  1. Загрузите Restoro PC Repair Tool, который поставляется с запатентованными технологиями (патент доступен здесь ).
  2. Нажмите Начать сканирование, чтобы найти проблемы Windows, которые могут вызывать проблемы с ПК.
  3. Нажмите «Восстановить все», чтобы исправить проблемы, влияющие на безопасность и производительность вашего компьютера.
  • В этом месяце Restoro скачали 662 786 читателей.

Microsoft Excel – один из самых сложных инструментов в пакете Office, он содержит множество функций, большинством из которых можно управлять с помощью панели инструментов. Отсутствие панели инструментов затрудняет работу с Excel.

Без этих важных элементов в Excel вы не сможете быстро выполнять работу, поэтому, естественно, вы ищете исправления.

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


Как вернуть панель инструментов в Excel?

1 Лента скрыта, показать лентуПанель инструментов не отображается в Excel? Вот как решить эту проблему

  1. В окне MS Excel щелкните значок Параметры отображения ленты, чтобы открыть следующие параметры:
  • Автоматически скрывать ленту:
    • Лента исчезает, когда вы работаете с листом, и появляется только тогда, когда вы нажимаете ALT или щелкаете значок эллипса «Еще».
  • Показать вкладки:
    • Отображать только вкладки и оставлять панель инструментов и ленту скрытыми.
  • Показать вкладки и команды:
    • Всегда отображайте вкладки и команды.
  1. Выберите «Показать вкладки» или «Показать вкладки и команды», чтобы отобразить панель инструментов и показать отсутствующую панель инструментов Excel.

2 Если вкладка надстройки не отображается в Excel

Панель инструментов не отображается в Excel? Вот как решить эту проблему

  1. Нажмите ссылку меню ” Файл ” вверху страницы.
  2. В меню “Файл” выберите ” Параметры”.
  3. Затем перейдите в раздел «Надстройки» на левой панели и выберите «Отключенные элементы».
    • Если Excel отключит надстройку, вы найдете ее в списке здесь.
  4. Выберите надстройки, для которых отсутствует вкладка, и нажмите «Включить».

3 Другие решения при отсутствии панелей инструментов Excel

  • Нажмите CTRL + F1 – ярлык на ленте.

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

  • Щелкните вкладку, чтобы временно просмотреть ленту.
    • Затем, в нижней правой части экрана, нажмите на контактный значок, чтобы закрепить ленту на экране постоянно.
  • Дважды щелкните видимые названия вкладок.
  • Щелкните вкладку правой кнопкой мыши и снимите флажок Свернуть ленту (или Свернуть ленту, в зависимости от вашей версии Excel).
  • Если вы выберете параметр «Автоматически скрывать ленту» во время работы с листом, лента и панель инструментов исчезнут.
    • Чтобы увидеть их, просто наведите указатель мыши на верхнюю часть книги и щелкните.

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

Лента или панель инструментов, которые не отображаются в Excel, редко являются признаком проблемы или ошибки; в основном это связано с настройками отображения ленты. Нажмите ярлык на ленте (CTRL + F1), чтобы показать, что панель инструментов Excel отсутствует.

Если это по-прежнему не решает проблему, попробуйте другое решение на этой странице.



Источник записи: windowsreport.com

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