Спасибо всем вам, ребята, которые внесли свой вклад в вопрос. Хочу обобщить опыт и предоставить способ, которым мне удалось go.
1) Получите ваш код VBA
Давайте создадим такой код. Это может быть как угодно. Для этого откройте VBA на вкладке Developers
или нажмите Alt+F11
. Создайте новый модуль, щелкнув правой кнопкой мыши на VBAProject > Insert > Module
, назовите его sayMsg
в окне Properties
и введите следующий код:
Sub saySomething()
MsgBox "What's up?"
End Sub
Как я уже говорил выше - этот модуль может содержать все, обычно это функциональная часть вашего кода, которая будет вызвана в другом модуле позже.
Давайте создадим новый модуль так же, как мы создали первый и назовем его sayRibbon
. Этот отдельный модуль содержит функцию вызова или так называемую «кнопку», которая запускает нашу подпрограмму из модуля sayMsg
. Copy > Paste
код ниже:
Private Sub sayButtons(Control As IRibbonControl)
Select Case Control.ID
Case Is = "saySomething_Btn"
Call saySomething
Case Else
End Select
End Sub
По сути, здесь мы имеем Case
с именем saySomething_Btn
, который является самой «кнопкой» с определенной функцией вызова.
Теперь save
это как файл надстройки Excel .xlam
и close
программы.
Примечание: при выборе .xlam
в раскрывающемся меню вы будет автоматически находиться в папке Microsoft > AddIns
по умолчанию. Чтобы сохранить его на Desktop
, сначала выберите тип файла, а затем переместите папку.
2) XML map by Office RibbonX Editor
Утилита выше предоставляет вам возможность создать пользовательскую вкладку на ленте Excel. Перейдите по ссылке для скачивания. Все инструкции по установке и использованию также доступны по этой ссылке.
- После завершения sh с установкой откройте файл
OfficeRibbonXEditor.exe
. File > Open
your .xlam
файл. Теперь он появился в списке ниже. Right click > Insert Office 2010+ CustomUI Part
(или Insert Office 2007 CustomUI Part
- зависит от используемой версии Office). Copy > Paste
код ниже:
Код
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" xmlns:Q="sayRibbon">
<ribbon startFromScratch="false">
<tabs>
<tab idQ = "Q:rxTabUI" label="Say Something" insertAfterMso="TabView">
<group idQ="Q:rxGrpUI" label="Say">
<button id="saySomething_Btn" label="Say Something" onAction="sayButtons" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
- Нажмите
Validate
, в случае проблем - появится сообщение об ошибке (Отладка при необходимости, но вы не должны в это случай). - Теперь
Save
и Close
Редактор ленты. Сохранить можно только в том случае, если Excel не открывает .xlam
.
3) Доступ к надстройке .xlam в любой книге WorkBook
Основной Цель такого подхода состояла в том, чтобы обеспечить легкий доступ к коду VBA из любой рабочей книги в Excel и с любого компьютера в корпоративной сети, фактически не устанавливая его отдельно на каждом отдельном компьютере.
Это на самом деле не имеет значения - если вы хотите получить доступ только к вашей P C или локальной сети, процесс установки такой же.
- Поместите файл
.xlam
в любое место по вашему выбору (локальная папка или сервер) . - Go до
Excel > File > Options > Add-Ins
. - Нажмите
Go...
кнопку ниже, Browse
для .xlam
местоположения и нажмите OK
. - Убедитесь, что Надстройка отмечена в списке. Нажмите
OK
.
Уведомление : я бы порекомендовал encrypt your VBA
по соображениям безопасности, на случай, если вы хотите быть тем, кто действительно может редактировать код - чтобы устранить любые проблемы, которые могут возникнуть, если код VBA не зашифрован.
Я проверил производительность своей корпоративной сети, результаты вполне удовлетворительные. Все изменения, которые вы вносите в код, мгновенно обновляются среди всех пользователей после перезапуска их приложения Excel.
Не забудьте выпустить примечания об изменениях и оставить хотя бы пару более старых версий доступными для людей, в в случае необходимости или чрезвычайной ситуации.
Пока проект будет развиваться, возможно, могут быть использованы более сложные подходы, однако из-за границ, с которыми я сталкиваюсь в настоящее время, этот подход обеспечивает наилучшую производительность на данный момент.