Добавление кнопки на ленту Microsoft Office 2007/2010

Настройки MS Office, Open Office и пр. офисного ПО. Полезные советы и пр. То, чего не найдешь в бескрайних просторах Интернета. Решения тех проблем, которые не решаются типовыми ответами, которые можно получить в техподдержке Майкрософта - а именно: переустановить продукт или купить какой-ть другой лицензионный диск.


Модератор: UncleFather

Аватара пользователя
UncleFather
Site Admin
Сообщения: 1503
Зарегистрирован: 17 авг 2004 16:20, Вт
Контактная информация:

Добавление кнопки на ленту Microsoft Office 2007/2010

Сообщение UncleFather »

Проблема:

Как известно, начиная с Office 2007, компания Microsoft стала использовать ленточный интерфейс меню. Конечно, ко всему можно привыкнуть, но как-то вот сильно напрягает то, что нельзя никак этот интерфейс менять. То есть ни добавить нужную кнопку - ни удалить лишнюю. Однако, уже в Microsoft Office 2010 возможность добавлять/удалять кнопки на ленту появилась, правда, по сравнению с Microsoft Office 2003 эта возможность сильно урезана.

Вот почему хочется поделиться опытом полноценной правки ленточной панели меню.

Решение:

В этом примере мы будем добавлять кнопку «Сканировать» на ленту Microsoft Office 2007. Почему именно такой выбор - да потому что начиная с Office 2007, компания Microsoft удалила из Word возможность сканировать прямо в документ, предписывая пользоваться специальным инструментом «Microsoft Office Document Scanning».

Однако мы, люди привыкшие к удобной функции прямо в интерфейсе MS Word 2003 «Вставка» -> «Рисунок» -> «Со сканера или камеры»

Так было в Office 2003
24.JPG

хотим вернуть такую удобную кнопку на панель инструментов.

Итак, начнем.

Если у нас установлен MS Office 2010, то первый и второй этапы можно пропустить, создав кнопку «Сканировать» непосредственно в интерфейсе MS Word 2010 и привязав ее к макросу, создаваемому на третьем этапе.


Этап первый. Отображение кнопки «Сканировать» на ленте Microsoft Word 2007.

  1. Скачиваем бесплатный редактор xml тэгов, Ribbon XML Editor предназначенный специально для переработки меню MS Word 2007-2010.
    Зеркало здесь:

    RibbonXMLEditor_4.1.7z
    (1.84 МБ) 1105 скачиваний

    Поскольку в нашем примере мы будем использовать этот редактор лишь узконаправленно а «Ribbon XML Editor» на самом деле очень полезный, функциональный и главное - простой редактор, то для полного понимания его работы стоит почитать статьи его автора:

  2. Распаковываем скачанный архив и запускаем редактор «Ribbon XML Editor»

  3. Создаем на рабочем столе документ MS Word, открываем его, делаем какое-нибудь изменение и сохраняем. Это важно, иначе «Ribbon XML Editor» будет ругаться

    «EZipReader: Не найдена сигнатура END_OF_CENTRAL_DIR_SIGNATURE»

    Спойлер
    17.jpg
  4. Открываем этот документ MS Word при помощи «Ribbon XML Editor», прямо из интерфейса редактора:

    Спойлер
    16.jpg
  5. Поскольку собственных меню в этом файле мы не создавали, то и окно редактора «Ribbon XML Editor» будет чистым:

    Спойлер
    18.jpg
  6. Вставляем в редактор следующий код:

    Код: Выделить всё

    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
      <ribbon startFromScratch="false">
        <tabs>
          <tab idMso="TabHome">
    		<group id="MyScanGroup" label="Сканирование">
    			<box id="__BoxPage1" >
    				<button id="MyScanButton" label="Сканировать" size="large" showLabel="true"  image="Scanner" onAction="InsertFromScanner" />
    			</box>
    		</group>
            <group idMso="GroupStyles" visible="false"/>
            <group idMso="GroupInsertTables"/>
            <group idMso="GroupInsertSymbols"/>
            <group idMso="GroupInsertPages"/>
            <group idMso="GroupZoom">
    		</group>
          </tab>
          <tab id="TabStyles" label="Разное">
            <group idMso="GroupStyles"/>
          </tab>
        </tabs>
      </ribbon>
    </customUI>

    Здесь параметру «onAction» присваивается имя макроса «InsertFromScanner» из общей книги макросов, который мы будем создавать на третьем этапе.

  7. Добавляем в проект картинку (которая будет иконкой на нашей кнопке) в формате png, bmp, tif, tiff, ico, emf, wmf и именем «Scanner»:

    Спойлер
    20.jpg

    Картинку можно скачать предварительно из сети Internet. Приведу в пример пару png-изображений сканера:

    Спойлер
    Scanner.png
    Scanner1.png
    Scanner1.png (35.81 КБ) 12448 просмотров
  8. Делаем запуск скомпилированного кода прямо из интерфейса «Ribbon XML Editor» (открываем созданный нами xml документ в MS Word):

    Спойлер
    19.jpg
  9. Надо добавить, что указанный xml код не только добавляет кнопку «Сканировать» на вкладку «Главная» ленты MS Office Word, но и переносит редко используемую группу «Стили» на вкладку ленточного меню «Разное».
    В итоге в нашем документе (но не во всех документах MS Word) получаем вкладку «Главная» без лишних кнопок стилей, но с нужной кнопкой «Сканирование»:

    Спойлер
    01.JPG
  10. Закрываем «Ribbon XML Editor» (а MS Word 2007 с нашим документом оставляем открытым)


Этап второй. Отображение кнопки «Сканировать» на ленте всех документов Microsoft Word 2007, а не только в том, который мы только что создали.

  1. Сохраняем этот наш документ с кнопкой «Сканировать» как шаблон с поддержкой макросов (dotm):

    Спойлер
    21.jpg
    22.jpg
  2. Закрываем все экземпляры MS Word

  3. Переименовываем только что сохраненный файл в «Normal.dotm»

  4. Открываем папку своих шаблонов: %appdata%\Microsoft\Шаблоны

  5. Переименовываем старый файл шаблонов «Normal.dotm» в «Normal1.dotm»

  6. Копируем наш новый файл «Normal.dotm» в папку %appdata%\Microsoft\Шаблоны:

    Спойлер
    23.jpg

    То есть на данном этапе мы заменили стандартный файл шаблонов MS Office Word на свой файл, с кнопкой «Сканировать», созданный на предыдущем этапе.


Этап третий. Создание в стандартном шаблоне MS Word подписанного макроса (то есть непосредственно исполняемого кода VBA) для вызова интерфейса сканирования

  1. Создаем свою новую электронную подпись, для чего запускаем «Microsoft Office» -> «Средства Microsoft Office» -> «Цифровой сертификат для проектов VBA»:

    Спойлер
    03.JPG
  2. Задаем произвольное имя, например «MyMacroces»:

    Спойлер
    04.JPG
  3. Cоздаем сертификат:

    Спойлер
    05.JPG
  4. Открываем Word 2007 (любой файл или новый документ)

  5. Отображаем панель «Разработчик» (Кнопка«Office» -> «Параметры Word»:

    Спойлер
    10.jpg

    -> Вкладка «Основное» -> ставим галочку «Показывать вкладку «разработчик» на ленте»:

    Спойлер
    11.jpg
  6. Открываем редактор «Visual Basic»

    Спойлер
    12.jpg
    13.jpg
  7. В общей книге «Normal» (для того, чтобы код модуля был доступен из любого файлика MS Word) создаем новый модуль с произвольным именем, например «Module1»:

    Спойлер
    14.jpg
  8. Копируем в него код вызова сканера:

    Код: Выделить всё

    Sub InsertFromScanner(ByVal Control As IRibbonControl)
        On Error Resume Next
        WordBasic.InsertImagerScan
    End Sub
    
    Sub InsertFromScanner1()
        On Error Resume Next
        WordBasic.InsertImagerScan
    End Sub

    Здесь создается два макроса:
    первый - в который при вызове передается параметр «(ByVal Control As IRibbonControl)» - это нужно для того, чтобы макрос вызывался кнопкой, которую мы создали на ленте (соответственно, имя макроса должно совпадать с тем именем, которое мы присвоили параметру «onAction» в xml шаблоне, созданном на первом этапе).

    второй - с вызовом без параметров- на всякий случай, если, например в MS Office 2010 захочется просто из интерфейса MS Word (вручную) создать новую кнопку на ленте с запуском макроса.

    Спойлер
    15.jpg
  9. Подписываем наш модуль созданным сертификатом: «Tools» -> «Digital Signature»:

    Спойлер
    02.JPG

    -> Раздел «Подпись» -> Кнопка «Выбрать»:

    Спойлер
    07.JPG
    07.JPG (12.7 КБ) 12446 просмотров

    -> Выбираем только что созданный сертификат:

    Спойлер
    08.JPG

    -> «ОК»:

    Спойлер
    06.JPG
    06.JPG (13.38 КБ) 12446 просмотров
  10. Сохраняем шаблон «Normal» (Ctrl+s) и закрываем Visual Basic

В итоге имеем во всех документах MS Word 2007 текущего пользователя «причесанную» «Главную» вкладку ленты быстрого доступа с кнопкой «Сканировать», которая вызывает подписанный макрос из общей книги макросов :

01.JPG

Архив с готовым шаблоном «Normal.dotm» можно скачать здесь для MS Word 2007:

Normal.rar
(143.28 КБ) 783 скачивания

и здесь для MS Word 2010:

Normal.rar
(147.34 КБ) 728 скачиваний

В статье использовались материалы:

  1. Общие сведения - Ribbon XML Editor (бесплатно) - Поддержка ПО - Сайт Максима Новикова

  2. Сканирование и MS Office 2010 - как сканировать в многостраничный файл tiff

  3. ® MICROSOFT.OFFICE.2010 ► Делаем кнопку сканирования в Word 2010!

  4. Как добавить на ленту Excel 2007 вкладку с кнопками для своих макросов


Alexander A. Manaeff©

Понравилась статья? Будем крайне признательны за репосты в соцсетях! Материально поддержать проект можно здесь

Мои странички:
ВКонтакте
Одноклассники
Youtube
Facebook
Instagram

Изображение
Изображение
Изображение
Изображение