Статьи из блога
Как назначить свою иконку для макроса в Word 2007
Несколько месяцев назад я получил письмо от пользователя, в котором меня спрашивали о возможности назначить для кнопки макроса (выведенного на панель быстрого доступа в редакторе Word 2007) своей иконки.
Как известно, в прежних версиях редактора можно было назначить для любой команды на панели инструментов свою собственную картинку. Можно было отредактировать иконку на кнопке или нарисовать собственную с помощью окна Редактор кнопок:
В редакторе Word 2007 этой возможности нет.
Однако, на прошлой неделе я просматривал сайт Грэга Макси (Greg Maxey) и обнаружил у него
Мне показалось интересной его статья и я повторил эксперимент.
Все удалось, но многое пришлось додумывать самостоятельно. В этой заметке я расскажу своими словами суть решения и покажу, как можно назначить свою иконку для собственных макросов.
Во-первых, необходимо скачать и установить у себя специальную программу для редактирования XML-скриптов -
Замечу также, что на своем сайте Максим опубликовал замечательную статью-инструкцию в трех частях
Во-вторых, подготовьте картинку для вашей иконки-кнопки. Она должна быть в формате PNG или GIF. Если у вас нет подходящей картинки, то вы можете создать ее в упомянутом Редакторе кнопок Word 2003. После того, как вы нарисовали иконку в редакторе, скопируйте ее:
После этого откройте любой графический редактор, вставьте скопированное изображение и сохраните его в нужном формате.
В-третьих, запустите редактор Word 2007 и откройте в режиме редактирования ваш шаблон с макросами или документ с вашими макросами. Шаблон должен быть пересохранен в формате DOTM, а документ в формате DOCM. Закройте теперь все документы и сам редактор.
В-четвертых, запустите редактор XML-скриптов (я использую Office 2007 Custom UI Editor) и откройте в нем ваш шаблон или документ.
В-пятых, вставьте в окно редактора следующий код:
<!-- Создаем свою вкладку на ленте, группу команд и кнопку с собственной картинкой. --> <customui xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon> <tabs> <tab id="MyTab" label="Моя вкладка" insertbeforemso="TabInsert"> <group id="MyGroup" label="Группа"> <button id="MyButton" label="Кнопка" image="face_me" size="large" onaction="MyNewAvatar"> </button></group> </tab> </tabs> </ribbon> </customui>
Кратко объясню, что делает этот скрипт. С его помощью мы создаем собственную вкладку на ленте с заголовком "Моя вкладка". На этой вкладке будет создана группа команд с наименованием "Группа", в которой будет размещена кнопка с нашей картинкой (имя файла картинки "face_me"). По щелчку на этой кнопке будет выполняться макрос, который вы определите для кнопки. В данном примере, это макрос с именем "MyNewAvatar".
В-шестых, подключим к документу выбранную заранее картинку. Для этого щелкаем на кнопке Insert Icons:
Находим и выбираем свою картинку. Ее иконка должна появиться в правой панели редактора:
ID (идентификатор) картинки нужно вставить в наш код в тег Image (cмотрите код выше). У меня это image="face_me".
В-седьмых, сохраняете файл и открываете в редакторе Word 2007 ваш документ или шаблон, для которого вы делали иконку. Должно получиться примерно следующее:
Как видите, все получилось. Но если вы сейчас нажмете на кнопку, то скорее всего появится сообщение, что не найден макрос. Это значит, что в вашем документе (шаблоне) нет макроса с именем, который вы задали для кнопки. Напоминаю, в моем случае в коде это onAction="MyNewAvatar". Но перед этим отредактируйте код макроса, добавив в скобки следующий агрумент:
control As IRibbonControl
Должно получиться примерно следующее (мой тестовый макрос):
Sub MyNewAvatar(control As IRibbonControl) MsgBox "Работа кнопки с собственной иконкой" End Sub
Замените имя макроса на имя вашего макроса и проверьте работоспособность.
Кстати, проверить правильность вызова макроса можно и из редактора XML-скриптов, нажав на кнопку Generate Callbacks:
Откроется новая вкладка с октрывающим и закрывающим операторами кода на VBA:
Чтобы добавить иконку на панель быстрого доступа (и не создавать собственную вкладку), нам потребуется слегка изменить код скрипта и выполнить дополнительные действия для размещения на панели своей кнопки.
- Открываем наш документ в редакторе XML-скриптов и вставляем следующий код:
<!-- Добавление иконки на панель быстрого доступа --> <customui xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon> <tabs> <tab idmso="TabInsert"> <group id="MyGroup" label="Группа" visible="false"> <button id="MyButton" label="Моя кнопка" image="face_me" onaction="MyNewAvatar"> </button></group> </tab> </tabs> </ribbon> </customui>
- Добавляете иконку-картинку, как это было описано выше.
- Сохраняете файл.
- Открываете документ (шаблон) в редакторе Word 2007.
- Щелкаете на кнопке Настройка панели быстрого доступа:
и выбираете из раскрывшегося меню команду Другие команды. Откроется диалоговое окно Параметры Word.
- В поле Выбрать команды из: выбираете строку Все команды. Ниже в панели появляется список всех доступных команд редактора.
- Находите и выбираете вашу команду (в моем случае это "Моя кнопка"):
Затем нажимаете кнопку Добавить, чтобы перенести команду на панель быстрого доступа.
- Закрываете окно и тестируете получившийся результат. Он должен выглядеть примерно так:
Вот и все!
Метки: word 2007 | иконки | макросы | панель быстрого доступа
Просмотров: 42820
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 10 полезных заметок о колонтитулах
- 3 способа очистки списка недавно открытых документов
- Microsoft Office: популярные команды на одной вкладке
- Ribbon XML Editor — программа редактирования интерфейса Word 2007, 2010
- SQL для начинающих: изучите SQL онлайн за 9 часов
- Word 2007: добавляем свою вкладку и свои команды
- Word 2007: полотно, рисунки, линии
- Word 2007: смена формата сохранения файла
- Word 97 - решение проблемы с отображением символов на линейке
- Word 97. Слияние документов как один из способов упростить свою работу
- Абзац с цветным фоном
- Автозаполняемые колонтитулы
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение всех открытых документов
- Автоматическое сохранение документа при его закрытии
- Автотекст и Word 2007
- Автотекст с последовательной нумерацией
- Белый текст на синем фоне в Word 2007
- Белый текст на синем фоне: ностальгия по DOS
- Быстрая смена ориентации страниц документа
- Быстрая смена регистра букв (слов) или их размеров
Комментариев: 26
Тогда уж и общую статью этого автора по "Customizing Ribbon" - http://gregmaxey.mvps.org/Customize_Ribbon.htm
Добрый день, Антон.
Хочу в начале поблагодарить за действительно полезный сайт, таких сейчас немного - с удовольствием читаю его и мотаю себе на ус все хитрости Word'а Вы делаете хорошую работу, спасибо Вам за это!
Теперь к моей проблеме: у меня есть документ в Word'е, в котором большая двухколоночная таблица с текстом (англо-русский словарь слов и выражений). Мне нужно удалить в этой таблице все одиночные слова - т.е. если в одной из ячеек строчки или в обоих встречается одно единственное слово, эту строку таблицы надо удалить. Если слов в ячейке больше одного, строчку нужно оставить - и так для всей таблицы. Возможно ли это дело как-нибудь автоматизировать? Пробовал искать единичное слово с помощью регулярных выражений, что-то не получилось :(
Очень надеюсь на Ваш ответ - документ очень большой, не хотелось бы выискивать одиночные слова вручную.
Заранее благодарю,
Алексей
Как-то после праздников туговато соображается.
Вот, что получилось на скорую руку.
Небольшое замечание. В ячейках не должно быть лишних пробелов, знаков абзаца и прочей нечисти. Т.е., если слово в ячейке одно, то в ячейке кроме него и символа конца ячейки больше ничего не должно быть.
Александр Витер, огромное Вам спасибо!
Всё получилось, макрос работает, как часы. Теперь рутина мне не страшна =)
Ещё раз благодарю!
В Word 2007 намного больше иконок для кнопки макроса, чем в Word 2003. Вопрос:
Где находятся иконки для кнопки макроса (Word 2007)?
Можно ли туда добавить несколько своих иконок?
Если вы имеете в виду кнопки на панели быстрого доступа, то никак. Пользуйтесь тем, что есть
а можно ли такую же фишку и в excel 2007 проделать, а?
Можно!
Отлично! тогда распишу свою проблему по подробнее. в общем у меня есть куча макросов сохраненные в "личной книге макросов", т.е. они не привязанны к какой то одной книге. так ка их у меня уже много то их кнопки с трудом уже помещаются на панели бымтрого доступа, поэтому хочется создать свою вкладку "Мои макросы" на ленте и разместить кнопки макросов со своими рисунками в этой новой вкладке. есть какие нибудь предложения по решению такой проблемки?
Предлагаю более подробно описать формат самой команды onAction и формат заголовков соответствующих ей макросов.
Вот пару вопросов:
1. Где найти полную документацию по формату команды для свойства onAction и ему подобным? Интересуют варианты типа onAction="MyProject.MyModule.MyProcedure", onAction="!" и все остальные.
2. Где найти список всех элементов ленты и формат соответствующих им макросов onAction, onChange и др.?
onAction это не команда, а атрибут элемента ленты, определяющий имя макроса, выполняющегося при щелчке на этом элементе. Эти макросы называются процедурами обратного вызова или callbacks по-английски. Их полный список приведён здесь (на английском), так же как и список остальных атрибутов элементов управления.
Все процедуры обратного вызова в качестве одного из параметров имеют control As IRibbonControl, содержащий элемент управления, вызвавший эту процедуру.
При работе с интерфейсом я рекомендую использовать программу Ribbon XML Editor, которая автоматически генерирует шаблоны для процедур обратного вызова, если таковые были указаны для элемента управления.
В качестве примера использования динамических атрибутов и процедур обратного вызова предлагаю ознакомится с моей галереей для вставки изображений из папки.
Спасибо. C callbacks процедурами ситуация прояснилась.
Ribbon XML Editor - полезная и удобная вещь.
А насчет свойства onAction, я имед ввиду формат команды содержащейся в этом свойстве.
В XML для onAction указывается просто имя соответствующей процедуры. Имя можно указывать как полное, с указанием имени проекта, модуля и имени процедуры, так и только имя процедуры. Я всегда указываю только имя процедуры, а чтобы имена процедур в разных шаблонах не конфликтовали между собой, я ставлю в начале модуля с процедурами строку Option Private Module.
Из опыта могу сказать, что нецелесообразно указывать разные процедуры onAction, если всё действие сводится к двум-трём строкам кода. Лучше указать одну процедуру для нескольких компонентов, а уже внутри неё, с помощью оператора Select Case, определять Id элемента управления, вызвавшего процедуру, и выполнять действие.
Пример. Поместите в документ такое XML-содержимое
В сам документ добавьте модуль с таким содержимым:
В результате появится дополнительная вкладка с двумя кнопками. Нажатие на одну кнопку активирует или дезактивирует другую. Пример файла можно скачать здесь
А в Excel 2003, можно также сделать? И можно ли сделать так, чтобы в иконке было несолько кнопок для разных макросов. Заранее благодарю за ответ.
С появлением Office 2010 необходимость в создании ленты с помощью XML-кода отпала. Возможно ли редактировать созданные Word-ом ленты? Каким образом привязать картинку именно к макросу, а не к кнопке?
Нет, Никита, не отпала. И вы сами это поймёте, когда
начнётезахотите редактировать созданные Word'ом ленты, точнее ленту. Дело в том, что настройки ленты, изменённой при помощи стандартных средств, хранятся в одном файле и изменённая лента доступна всегда, вне зависимости от открытого документа. Если же вам, для вашего документа нужны свои вкладки, то придётся лезть в XML и править руками. Кроме того, в 2010-м нет возможности настроить Backstage (то, что заменило кнопку Office)Здравствуйте! Вопрос: как сделать чтоб созданная группа и и вкладка (настройка ленты) была привязана к определенному шаблону *dotm. Чтобы призагрузке этого шаблона появлялись эта вкладка с группами. У меня Word 2010
Марина, для этого нужно создать отдельный шаблон и в нем уже создавать нужные вкладки и команды.
Антон, я уже создала шаблон, в нем макросы. В ленте, в Главной, создала группу и в нее добавила макросы. Но когда закрываю шаблон и Word, открываю вновь Word (не этот шаблон) группа эта в Главной присутствует, но естественно не работает. Мне нужно чтобы эта группа появлялась только в документах созданных на этом шаблоне или при открытии этого шаблона. А получается группа присутствует теперь всегда. Понять не могу как эта привязка осуществляется...Помогите пожалуйста
Марина, вероятно, ваш новый шаблон присоединен к текущему шаблону. Нажмите кнопку "Шаблон документа" на вкладке "Разработчик" и в открывшемся окне посмотрите, что загружено в качестве шаблона. Если там присутствует ваш шаблон, то удалите его из панели "Общие шаблоны и надстройки".
И второй момент: возможно, что ваш новый шаблон размещен в папке StartUp. В этом случае он будет доступен и для других документов. Перенесите ваш шаблон в другую папку (общую) для остальных шаблонов.
Друзья, помогите, пожалуйста, решить проблему. При работе в Ворде-2003 макрос активизируется нажатием иконки. Результат работы макроса – появляется несколько панелей инструментов. На каждой своя одна кнопка-иконка (или несколько), включающая свой собственный макрос. Нажимая на кнопки, оператор выполняет работу на своём компьютере в нескольких документах, которые открываются, обрабатываются и закрываются по программам, записанным в макросах. В Ворде-2003 проблем не возникало: панели появлялись в нужном мне месте экрана и т.д. Но в Ворде 2007 я не могу добиться того, чтобы панели находились в определённом месте на экране. Знает ли кто-нибудь, как помочь моей беде? Буду признателен за подсказку. Алексей Анатольевич.
хм....кликаем по панели -->More commands-->Customize-->Macros-->modify-->выбираем иконку
спасибо, статья все еще актуальна.
но я не могу создать названия ленты, групп и кнопок на русском.
редактор Office 2007 Custom UI Editor просто во время написания заменяет русские буквы какими-то иероглифами . не подскажите как быть?
Обратитесь на наш форум, там помогут.
Да, наверное, сайт полезный. Но, к сожаление, снова не для меня. Мудрёный. Если бы я врубался в то, что пишут и читают, то я бы и сам всё находил. Без советчиков.
К примеру, из этой ленты мне понятны лишь слова КЛИКАЕМ ПО ПАНЕЛИ, и понятен покемон (или как он там называется?). Во, вспомнил,- смайлик.
хм....кликаем по панели -->More commands-->Customize-->Macros-->modify-->выбираем иконку smile