Если перед вам стоит задача по автоматизации чего нибудь в excel, то забудьте про макросы, расположенные непосредственно в книге, создавайте панель инструментов (ribbon), которая
Для того что бы создать такую панель вам потребуется
1) файл excel с расширением xlam, расположенный в %userprofile%\appdata\roaming\microsoft\addins
2) редактор xml ресурса (для разметки кнопок)
3) определить кнопки по примеру
где p_MemberSelect это процедура VBA
4) в иницилазации процедуры (в файле xlam) нужно передавать предопределенные параметры
Sub p_MemberSelect(ByVal vIRibbonControl As IRibbonControl)
Но у данного решения есть одно ограничение — нет возможности создавать формы, встроенные в панели Excel, например:
Этот пример из проекта In2Sql (плагин для Excel, который визуализирует объекты SQL). В этом плагине код создан с помощью c# и библиотек VSTO.
- не зависит от конкретного файла
- располагается в основной панели инструментов
- дает кастомизируемый UI
Для того что бы создать такую панель вам потребуется
1) файл excel с расширением xlam, расположенный в %userprofile%\appdata\roaming\microsoft\addins
2) редактор xml ресурса (для разметки кнопок)
3) определить кнопки по примеру
button id="b_MemberSelect" label="Member Select" onAction="p_MemberSelect" imageMso="ReturnToTaskList" size="large"
где p_MemberSelect это процедура VBA
4) в иницилазации процедуры (в файле xlam) нужно передавать предопределенные параметры
Sub p_MemberSelect(ByVal vIRibbonControl As IRibbonControl)
Но у данного решения есть одно ограничение — нет возможности создавать формы, встроенные в панели Excel, например:
Этот пример из проекта In2Sql (плагин для Excel, который визуализирует объекты SQL). В этом плагине код создан с помощью c# и библиотек VSTO.
ClearAirTurbulence
Из редакторов рекомендую RibbonXMLEditor — крайне удобная олдскульная вещь.
novikov.gq/products/ribbonxmleditor/ribbonxmleditor.html
Нормально сделанная «своя» панель экономит массу времени. В современном экселе к сожалению, нельзя по-человечески кастомизировать панели инструментов, как в старом, а многие часто используемые функции раскиданы по разным вкладкам. Собрать это воедино затратно по времени, но в итоге экономит гораздо больше.
ClearAirTurbulence
Вот еще хороший ресурс по XML для лент:
fluentui.blogspot.com
bopoh13
RibbonXMLEditor 3.4 уже имела валидатор структуры и список imageMso* иконок.
Есть проблема при скрытии программно объекта
box
с параметромboxStyle="vertical"
. Приходится к вложенным объектам вbox
применять методgetVisible
.