Возникает вопрос: как все это получилось?
Само создание панели инструментов на ленте не представляет особой сложности и довольно подробно рассмотрено на уже упомянутом сайте Максима Новикова.
А как же прикрутить к нему собственные кнопки или меню, которые должны выполнять мои собственные макросы?
Начнем по порядку.
Во-первых, нужно создать кнопку, или любой другой элемент, который должен запускать на выполнение определенный макрос.
Во-вторых, нужно указать параметр onAction, в котором определить имя макроса, который, собственно и должен запускаться при нажатии на данную кнопку или пункт меню, что в общем-то одно и тоже.
В-третьих, написать правильно сам макрос.
Вот меню, которое я использую постоянно в своей работе. Оно еще не содержит всех пунктов, которые мне нужны, но уже работает.

Как видно из кода макроса он запускает на выполнение другой макрос, имя которого прописано в свойстве tag нашей кнопки. Этот простой маневр позволяет использовать только один макрос, для обработки нажатий на все кнопки. Главное, не забывать, что для каждой кнопки нужно указывать свое свойство tag.
Пока все.
Само создание панели инструментов на ленте не представляет особой сложности и довольно подробно рассмотрено на уже упомянутом сайте Максима Новикова.
А как же прикрутить к нему собственные кнопки или меню, которые должны выполнять мои собственные макросы?
Начнем по порядку.
Во-первых, нужно создать кнопку, или любой другой элемент, который должен запускать на выполнение определенный макрос.
Во-вторых, нужно указать параметр onAction, в котором определить имя макроса, который, собственно и должен запускаться при нажатии на данную кнопку или пункт меню, что в общем-то одно и тоже.
В-третьих, написать правильно сам макрос.
Вот меню, которое я использую постоянно в своей работе. Оно еще не содержит всех пунктов, которые мне нужны, но уже работает.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <menu id="__MyMacroses" label="Макросы"> <menuseparator id="__Separator1" title="Вставка в документ"/> <button id="InsertQuotes" image="QUOTES.png" label="Взять в кавычки" onaction="MyButtonAction" supertip="Выделенный текст заключается в угловые кавычки." tag="Macroses.ВзятьВКавычки"/> <button id="ConvertToRoman" image="roman.png" label="Сделать римской цифрой" onaction="MyButtonAction" supertip="Выделенный текст преобразуется в римскую цифру." tag="Macroses.СделатьРимскойЦифрой"/> <button id="InsertFormula" image="function.png" label="Вставить формулу с нумерацией" onaction="MyButtonAction" supertip="Вставка формулы по центру страницы и нумерацией по правому краю" tag="Macroses.Формула_с_нумерацией"/> <menuseparator id="__Separator2" title="Правка документа"/> <button id="ClearDoubleSpaces" label="Удалить пробелы" onaction="MyButtonAction" supertip="Удаление 2-х и более пробелов подряд." tag="Macroses.Удалить_лишние_пробелы"/> </menu> |
Как видно из кода макроса он запускает на выполнение другой макрос, имя которого прописано в свойстве tag нашей кнопки. Этот простой маневр позволяет использовать только один макрос, для обработки нажатий на все кнопки. Главное, не забывать, что для каждой кнопки нужно указывать свое свойство tag.
Пока все.
8 комментариев :
Не понятно, как назначить Макрос кнопке. Всё очень запутано.
Имя макроса, который выполняется при нажатии на кнопку, содержится в атрибуте onAction
При попытке запустить макрос по кнопке выдает ошибку несовпадения количества аргументов (Wrong number of arguments or invalid property assigment). Нет мыслей о причине?
Иопть, в аргументах процедуры должно быть:
control As IRibbonControl.
Я с этим тоже столкнулся, когда только начинал постигать ленточную азбуку в 2006 году.
Рад, что Вы сами нашли ответ
И есчо вопрос - какие требования к картинкам для кнопок? Ибо нарисовал .png, положил её в директорию моего дока, прописал атрибут image у button, но рядом с кнопкой она появляться как-то не хочет.
картинку нужно поместить в сам документ, а в XML-схеме прописать ссылку на картинку. Это удобно делать в программе Ribbon XML Editor и описано здесь:
http://novikovmaxim.narod.ru/products/ribbon/ribbon.htm
Или в блоге wordexpert.ru
http://wordexpert.ru/page/kak-naznachit-svoyu-ikonku-dlya-makrosa-v-word-2007
Спасибо! Эта мысль как раз уже пришла мне вчера :).
Не могу избавиться от привычки сначала писать, а потом думать)
Отправить комментарий