Запустите стороннюю надстройку Excel из VBA

Я хочу программно запустить стороннюю надстройку только с помощью VBA. Я использую Excel 2010

В идеале я хотел бы иметь возможность вызывать функции индивидуально, однако у меня нет доступа к коду надстройки (он даже не отображается как защищенный паролем проект VBA, как это было в Excel 2003).

Часы Google сказали мне, что это было возможно в более ранних версиях Excel, либо через Application.CommandBars("Add-Ins").Controls("Custom Button").Execute, либо CommandBars.ExecuteMso("Custom Button") - AFAIK, последний теперь работает только со встроенными функциями.

Эта настраиваемая кнопка также появляется в меню «Щелчок правой кнопкой мыши», поэтому ее можно запустить с помощью какой-то SendKeys реализации. Однако это явно далеко от идеала.

Я вырываю волосы из-за этого - я буду благодарен за любую помощь.


person kaybee99    schedule 15.01.2015    source источник
comment
В каком меню, вызываемом правой кнопкой мыши, он появляется? Это надстройка COM?   -  person Rory    schedule 15.01.2015
comment
Когда я щелкаю ячейку правой кнопкой мыши, внизу появляется опция запуска надстройки. Это надстройка COM.   -  person kaybee99    schedule 15.01.2015
comment
Длинный выстрел, но: Application.Commandbars("Cell").Controls(Application.Commandbars("Cell").Controls.Count).Execute может работать.   -  person Rory    schedule 15.01.2015
comment
Ты великолепен. Это действительно работает! Вы можете объяснить почему, я так понимаю? Поставьте как ответ, и я помечу как правильно.   -  person kaybee99    schedule 15.01.2015
comment
Я предполагаю, что он выбирает последний вариант в меню Cell. Есть ли способ выбрать по имени или метке?   -  person kaybee99    schedule 15.01.2015
comment
Если это сработает, вы сможете использовать Application.Commandbars("Cell").Controls("the button caption").Execute   -  person Rory    schedule 16.01.2015


Ответы (1)


В зависимости от того, как он был добавлен в меню, это может сработать:

Application.Commandbars("Cell").Controls(Application.Commandbars("Cell").Contro‌​ls.Count).Execute

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

Application.Commandbars("Cell").Controls("the button caption").Execute
person Rory    schedule 16.01.2015
comment
Последний не работает -Controls принимает только целое число. Я попытаюсь найти метку с Controls(x).Caption. Еще раз спасибо - person kaybee99; 16.01.2015
comment
Элементы управления должны принимать заголовок - что произойдет, если вы попробуете это сделать? - person Rory; 16.01.2015
comment
Я вернул точную подпись, передал эту строку, и она работает нормально. Оказывается, она имеет префикс &. - person kaybee99; 16.01.2015
comment
Да, & используется, чтобы подчеркнуть букву и сделать ее сочетанием клавиш. - person Rory; 16.01.2015
comment
Понятно. Еще раз спасибо - person kaybee99; 16.01.2015