Статьи из блога
Как добавить свои команды в контекстное меню в Word 2007
Ранее я уже писал аналогичную заметку для редактора Word 2003. Но недавно ко мне обратились с вопросом о возможности добавления/изменения команд в контекстное меню редактора Word 2007. Я озадачился этим вопросом и стал искать информацию.
В результате выяснилось, что добавить свои команды в контекстное меню редактора Word 2007 без программирования невозможно. Те способы, которые работали в прежних версиях, в новой не работают, что, впрочем, очевидно.
Я обнаружил информацию на англоязычных сайтах, посвященных программированию на VBA в Word. Для интересующихся предоставляю ссылки на источники:
- Customize the Word2007 Shortcut Menus - Замечательная заметка от Greg Maxey;
- Removing Items from Word 2007 right-click menu - Вопрос-ответ в группе обсуждений Microsoft.
Те макросы, которые приведены в источниках, я разобрал "по косточкам" для собственного понимания и теперь могу предложить свои варианты добавления нужных команд в контекстное меню, вызываемое щелчком правой кнопки мыши.
Добавляем в меню существующую в Word-е команду, например, Специальная вставка.
Эта команда, позволяющая выбрать способ вставки в документ элементов с особым форматированием, в Ворд 2003 была доступна из меню
Далее код (с комментариями). Если я в чем-то ошибся, прошу меня поправить.
Sub newItemToContextMenu() 'Добавляем новую команду (пункт меню) в контекстное меню, вызываемое по щелчку правой кнопкой мыши Dim cb As CommandBar 'Объявляем переменные Dim cbb As CommandBarButton Dim cbc As CommandBarControl CustomizationContext = NormalTemplate 'Сохраняем изменения настроек в глобальном шаблоне Normal.dotm On Error GoTo Ex 'В случае ошибки переходим к метке Set cb = CommandBars("text") 'Определяем конкретную панель (меню), куда будем вставлять нашу команду Set cbb = cb.FindControl(ID:=755) 'Определяем ссылку на конкретный пункт (кнопку) меню для возможностей дальнейшего поиска этого элемента If Not cbb Is Nothing Then Exit Sub 'Если пункт меню уже существует, то происходит выход из макроса без действий Set cbb = cb.Controls.Add(Type:=msoControlButton, ID:=755, Parameter:="new", Before:=1, Temporary:=False) 'Создаем пункт меню "Специальная вставка" Set cbb = Nothing 'Освобождаем переменную и память Ex: 'метка для ошибки End Sub
В коде вы можете видеть идентификационный номер для команды Специальная вставка - 755. Вы можете заменить этот ID на другой номер нужной вам команды. Полный список команд с идентификаторами можно получить из файла CommandControlsID.zip (русские наименования команд) или CommandBarID.zip (английские наименования команд).
Вставленная нами команда будет находиться в самом верху контекстного меню. Об этом свидетельствует параметр
Чтобы удалить этот пункт меню, выполните следующий макрос:
Sub RemoveItem() 'Удаление конкретного пункта (команды) из контекстного меню Dim cb As CommandBar Dim cbc As CommandBarControl CustomizationContext = NormalTemplate Set cb = CommandBars("Text") For Each cbc In cb.Controls If cbc.Parameter = "new" Then 'Ищем параметр, который мы указывали в предыдущем макросе cbc.Delete End If Next cbc End Sub
Может так случиться, что вы захотите вернуть оригинальный вид ваших меню, без добавленных вами команд. Для этой цели служит следующий макрос:
Sub ResetCommandBar() 'Сброс пользовательских настроек для меню. Меню возвращается к оригинальному виду со стандартными командами. Dim cb As CommandBar CustomizationContext = NormalTemplate Set cb = CommandBars("Text") cb.Reset End Sub
В следующий раз я расскажу о 2-ом варианте - макросе, который создает в контекстном меню ваши собственные раскрывающиеся пункты с вашими же командами.
Если вы не знаете, как подключить к документу и применить эти макросы, изучите следующие заметки с сайта:
Создание макроса из готового кода
Метки: word 2007 | контекстное меню | макросы | настройка word
Просмотров: 34333
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 10 вопросов и ответов по редактору Word (1 часть)
- 3 способа очистки списка недавно открытых документов
- Microsoft Office: популярные команды на одной вкладке
- Ribbon XML Editor — программа редактирования интерфейса Word 2007, 2010
- Word 2007: добавляем свою вкладку и свои команды
- Word 2007: полотно, рисунки, линии
- Word 2007: смена формата сохранения файла
- Word 97 - решение проблемы с отображением символов на линейке
- Абзац с цветным фоном
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение всех открытых документов
- Автоматическое сохранение документа при его закрытии
- Автотекст и Word 2007
- Автотекст с последовательной нумерацией
- Белый текст на синем фоне в Word 2007
- Белый текст на синем фоне: ностальгия по DOS
- Быстрая смена ориентации страниц документа
- Быстрая смена регистра букв (слов) или их размеров
- Быстрое изменение стиля форматирования текста
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
Комментариев: 13
А поменять содержимое мини-меню, высвечивающегося при выделении текста можно? =)
Вероятно, можно. Вопрос только, как это сделать. Теоретически нужно узнать наименование этой панели и затем уже использовать программирование. Но, боюсь, что это будет недоступно. Да и зачем менять, ведь там находятся часто используемые команды для работы с выделенным текстом.
Ну... Предположим, что я заядлый ЖЖист и при этом фанат ворда (фантастика, наверное, но всякое бывает). Посему я люблю писать в блог из Winword и при этом часто пишу зачеркнутым текстом. Понятно, что как фанат WinWord я уже знаю shortcut для этого дела, но хотелось бы вынести поближе эту функцию. Чисто умозрительный сценарий и мне это не особенно нужно, просто это из разряда "F.A.Q" =)
Александр, так не проблема. Вставьте эту команду в контекстное меню как описано выше. При щелчке правой кнопкой мыши на тексте или на пустом месте страницы в любом случае появляются два меню: одно для быстрого изменения форматирования выделенного текста, другое - обычное контекстное. Вот в контекстное и вставьте.
Антон, это кликать надо. А мини-меню появляется само - при выделении текста =)
В общем, я согласен, что если есть настолько обыденный workaround, то городить огород, может и незачем. Но Вы таки подменили мой вопрос, я не спрашивал, как это обойти или нужно ли это. Я спрашивал - возможно ли это и если да, то как =)
Запустил макрос по Вашему исходнику добавления пункта "Специальная вставка". Пункт не добавился, а кнопка "Вставить" на закладке "Главная" стала неактивной.
Олег, попробуйте удалить эту команду (следующий макрос в заметке) и повторить. Только что сам еще раз проверил работоспособность макроса - все корректно.
Пробовал удалять, запускал снова - не помогло. Где должна появиться кнопка "Специальная вставка" - на закладке "Главная" или на закладке "Вставка"? Макрос отдебагил по шагам, выполняется он корректно, в ошибку не вылетает.
Суть в чем - "Специальная вставка" в настройках панели и так есть - ее можно вручную на панель быстрого запуска добавить. А мне нужно добавить кнопку "MS Equation" - ее в списке в настройках нет и в списке CommandControlsID тоже нет.
Олег, речь идет в заметке о контекстном меню, то есть меню, которое появляется при щелчке правой кнопкой мыши. Вы щелкаете правой кнопкой мыши на документе и появляется это меню.
Добавить этим макросом кнопку на ленту, вы не сможете. Здесь нужно перепрограммировать ленту.
Здравствуйте, Антон.
Расскажите, пожалуйста, Каким образом создается собственное меню в надстройках MS Word, которое бы появлялось при подключении dot-шаблона с макросами.
Спасибо.
27.01.2009
Какой офис?
Здравствуйте, Антон. Скажите пожалуйста вы уже опубликовали статью о 2-ом варианте - макросе, который создает в контекстном меню собственные раскрывающиеся пункты с вашими же командами
Вставил в собственное выпадающее меню (выпадает по шорткату) пункт
Он появился, но серый - disabled.
Поменял ID на другой - тот же результат.
В чем может быть причина disabled?