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

1 <menu id="__MyMacroses" label="Макросы">
2 <menuSeparator id="__Separator1" title="Вставка в документ" />
3 <button id="InsertQuotes"
4 label="Взять в кавычки"
5 image="QUOTES.png"
6 onAction="MyButtonAction"
7 tag="Macroses.ВзятьВКавычки"
8 supertip="Выделенный текст заключается в угловые кавычки."/>
9 <button id="ConvertToRoman"
10 label="Сделать римской цифрой"
11 image="roman.png"
12 onAction="MyButtonAction"
13 tag="Macroses.СделатьРимскойЦифрой"
14 supertip="Выделенный текст преобразуется в римскую цифру."/>
15 <button id="InsertFormula"
16 label="Вставить формулу с нумерацией"
17 image="function.png"
18 onAction="MyButtonAction"
19 tag="Macroses.Формула_с_нумерацией"
20 supertip="Вставка формулы по центру страницы и нумерацией по правому краю"/>
21 <menuSeparator id="__Separator2" title="Правка документа" />
22 <button id="ClearDoubleParagraphs"
23 label="Удалить абзацы"
24 image="parags.png"
25 onAction="MyButtonAction"
26 tag="Macroses.Удалить сдвоенные абзацы"
27 supertip="Удаление 2-х и более символов абзаца подряд."/>
28 <button id="ClearDoubleSpaces"
29 label="Удалить пробелы"
30 onAction="MyButtonAction"
31 tag="Macroses.Удалить_лишние_пробелы"
32 supertip="Удаление 2-х и более пробелов подряд."/>
33 </menu>
2 <menuSeparator id="__Separator1" title="Вставка в документ" />
3 <button id="InsertQuotes"
4 label="Взять в кавычки"
5 image="QUOTES.png"
6 onAction="MyButtonAction"
7 tag="Macroses.ВзятьВКавычки"
8 supertip="Выделенный текст заключается в угловые кавычки."/>
9 <button id="ConvertToRoman"
10 label="Сделать римской цифрой"
11 image="roman.png"
12 onAction="MyButtonAction"
13 tag="Macroses.СделатьРимскойЦифрой"
14 supertip="Выделенный текст преобразуется в римскую цифру."/>
15 <button id="InsertFormula"
16 label="Вставить формулу с нумерацией"
17 image="function.png"
18 onAction="MyButtonAction"
19 tag="Macroses.Формула_с_нумерацией"
20 supertip="Вставка формулы по центру страницы и нумерацией по правому краю"/>
21 <menuSeparator id="__Separator2" title="Правка документа" />
22 <button id="ClearDoubleParagraphs"
23 label="Удалить абзацы"
24 image="parags.png"
25 onAction="MyButtonAction"
26 tag="Macroses.Удалить сдвоенные абзацы"
27 supertip="Удаление 2-х и более символов абзаца подряд."/>
28 <button id="ClearDoubleSpaces"
29 label="Удалить пробелы"
30 onAction="MyButtonAction"
31 tag="Macroses.Удалить_лишние_пробелы"
32 supertip="Удаление 2-х и более пробелов подряд."/>
33 </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
Спасибо! Эта мысль как раз уже пришла мне вчера :).
Не могу избавиться от привычки сначала писать, а потом думать)
Отправить комментарий