Товарищи, ткните носом в ссылку на эту тему. поиск мало помогает. Нужно создать надстройку с 2 кнопками для запуска 2 макросов. Офис 2007. для себя всегда кнопы макросов выводил на панель, а тут отделу налогооблажения надо было конвертер xls в xml. - для них нужна надстройка.
Private Sub Workbook_Open() On Error GoTo L1 With Application With .CommandBars.Add(Name:="ИМЯ", Position:=msoBarTop, Temporary:=False) With .Controls.Add(Type:=msoControlButton, Temporary:=False) .Caption = "ЗАГОЛОВОК" .Enabled = True .FaceId = 541 .OnAction = "AutoFitRowsHeight" .Style = msoButtonIconAndCaption .TooltipText = "ВСПЛЫВАЮЩАЯ ПОДСКАЗКА" End With .Protection = msoBarNoCustomize + msoBarNoResize .Visible = True End With End With L1: End Sub
1-одна кнопка
Чебурашка стал символом олимпийских игр. А чего достиг ты? Тишина - самый громкий звук
2)отредактировал его в блокноте - оставил только 2 кнопки со своими именами и указал имена своих макросов.
3)открыл через архиватор ribon.xlam и положил в папку customUI - свой customUI.xml
4) в редакторе visual basic переместил в надстройку свои макросы. при этом макросы должны быть объявлены как Sub macros (control As IRibbonControl) подробнее (http://www.planetaexcel.ru/forum.php?thread_id=6765) имена макросов должны быть такими же как указаны в customUI.xml
5) Сохранил все сделанные изменения.
Теперь при запуске надстройки - появляется панелька с нужными мне кнопками.
Можно в файл надстройки вложить нужную панель инструментов. При открытии надстройки на другом компутере появится эта панель на экране либо в списке панелей.
>>Можно в файл надстройки вложить нужную панель инструментов. При открытии надстройки на другом компутере появится эта панель на экране либо в списке панелей.
код, кот. я выкладывал, это и подразумевает : )
Чебурашка стал символом олимпийских игр. А чего достиг ты? Тишина - самый громкий звук
{quote}{login=egonomist}{date=30.08.2011 09:26}{thema=Как я сделал}{post}На будущее может кому пригодиться. Добавление кнопок на панель инструментов без макросов... 4) в редакторе visual basic переместил в надстройку свои макросы. при этом макросы должны быть объявлены как Sub macros (control As IRibbonControl) подробнее (http://www.planetaexcel.ru/forum.php?thread_id=6765) имена макросов должны быть такими же как указаны в customUI.xml {/post}{/quote} Надстройка появляется - макрос назначенный на кнопку из настройки не работает! Можно поподробнее, в какой Module написать макрос, чтоб он работал?
Каждое препятствие это новая возможность чему-то научиться.
Доброе утро, про создании надстройки макросом - минус то что она создается во вкладке надстройки, а не отдельной панелькой. плюсы - лучше защита от чужих глаз. Для своих нужд ковыряюсь с xml. макросы надо вставлять в отдельный модуль в названии макроса в скобках указать что это контрол ленты public sub Pushme (control As IRibbonControl) в атаче файл с примером - надстройка с кнопкой и с выпадающим списком. посмотрите через архиватор код customUI, макрос обработки событий выпадающего списка в module3, макросы нажатия кнопок в module1.
спасибо други! Заработала кнопка с макросом из надстройки. Причина - по привычке писал sub без private. Также в custom ui.xml был пробел после названия макроса после ковычки " и перед слэшем - внимательнее редактировать xml.
Единственное НО - я думал достаточно положить xlam application data\microsoft\excell\addins чтоб автоматом надстройка всегда запускалась у пользователя, а надо еще и прописывать ее в екселе в надстройках. Да и вкладка тоже не нужна для пары макросов (для пакета приложений - идеально) - удобнее все ж пользоваться панелью быстрого запуска, записать пользователю xlsb файл в excell\xlstart и добавитькнопку с макросом на панель быстрого запуска.
Вот если б можно было исталлировать кнопку быстрого запуска с макросом пользователю через xlsb ...
Каждое препятствие это новая возможность чему-то научиться.
пробовал я в свое время через книгу excell\xlstart - в итоге никто этой надстройкой не пользовался, так как при автоматическом открытии на других компьютерах книга открывалась с visible=true - то есть открывалась постоянна книга с макросами - очень напрягало. Надстройку можно создать и без вкладок. Просто книгу с макросами сохраните как xlam и все. Надстройку можно программно скопировать в application data\microsoft\excell\addins и подключить ее тоже можно программно (just google it).
По вашему последнему вопросу - можно сделать xlsb, на событие открытие книги повесить макрос создания кнопки в панели инструментов (см пост от EducatedFool), в итоге при отрытии во вкладке надстройки будет ваша кнопка с вашим макросом.
Вариантов много. Для своих коллег делаю автоматическое копирование в папку с надстройками, а они уж сами по надобности подключают их.
Выкладываю результаты своих потугов в создании надстроек. Долго пришлось искать нужную информацию по всему интернету. возможно кому то пригодится.
Написал надстройку google translate - в панели инструментов появляется вкладка где можно вводить текст и выбирать направление перевода, результат перевода отображается так же в панели инструментов в текстовом окне.(для перевода использовал функцию от EducatedFool, спасибо ему большое за код http://excelvba.ru/code/GoogleTranslate ) + добавил информер gismeteo с прогнозом работы на сутки. использовал лейблы. Весь xml и vba снабжен подробными комментариями что куда ставить чтоб работало.
p.s:в архиве две надстройки google_translate.xlam с переводчиком и погодой, google_tranclate0.xlam только с переводчиком при желании установить надстройку только с переводчиком надо будет 0 из названия убрать (жесткая привязка к названию книги google_translate.xlam)
p.p.s:код возможно сыроват (главное показать принцип), буду рад любым предложениям по оптимизации и доработке.