UncleFather » 25 фев 2014 09:41, Вт
Проблема:
Как известно, начиная с Office 2007, компания Microsoft стала использовать ленточный интерфейс меню. Конечно, ко всему можно привыкнуть, но как-то вот сильно напрягает то, что нельзя никак этот интерфейс менять. То есть ни добавить нужную кнопку - ни удалить лишнюю. Однако, уже в Microsoft Office 2010 возможность добавлять/удалять кнопки на ленту появилась, правда, по сравнению с Microsoft Office 2003 эта возможность сильно урезана.
Вот почему хочется поделиться опытом полноценной правки ленточной панели меню.
Решение:
В этом примере мы будем добавлять кнопку «Сканировать» на ленту Microsoft Office 2007. Почему именно такой выбор - да потому что начиная с Office 2007, компания Microsoft удалила из Word возможность сканировать прямо в документ, предписывая пользоваться специальным инструментом «Microsoft Office Document Scanning».
Однако мы, люди привыкшие к удобной функции прямо в интерфейсе MS Word 2003 «Вставка» -> «Рисунок» -> «Со сканера или камеры»
хотим вернуть такую удобную кнопку на панель инструментов.
Итак, начнем.
Если у нас установлен MS Office 2010, то первый и второй этапы можно пропустить, создав кнопку «Сканировать» непосредственно в интерфейсе MS Word 2010 и привязав ее к макросу, создаваемому на третьем этапе.
Этап первый. Отображение кнопки «Сканировать» на ленте Microsoft Word 2007.
-
Скачиваем бесплатный редактор xml тэгов, Ribbon XML Editor предназначенный специально для переработки меню MS Word 2007-2010.
Зеркало здесь:
Поскольку в нашем примере мы будем использовать этот редактор лишь узконаправленно а «Ribbon XML Editor» на самом деле очень полезный, функциональный и главное - простой редактор, то для полного понимания его работы стоит почитать статьи его автора:
-
Распаковываем скачанный архив и запускаем редактор «Ribbon XML Editor»
-
Создаем на рабочем столе документ MS Word, открываем его, делаем какое-нибудь изменение и сохраняем. Это важно, иначе «Ribbon XML Editor» будет ругаться
«EZipReader: Не найдена сигнатура END_OF_CENTRAL_DIR_SIGNATURE»
-
Открываем этот документ MS Word при помощи «Ribbon XML Editor», прямо из интерфейса редактора:
-
Поскольку собственных меню в этом файле мы не создавали, то и окно редактора «Ribbon XML Editor» будет чистым:
-
Вставляем в редактор следующий код:
Код: Выделить всё
<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» из общей книги макросов, который мы будем создавать на третьем этапе.
-
Добавляем в проект картинку (которая будет иконкой на нашей кнопке) в формате png, bmp, tif, tiff, ico, emf, wmf и именем «Scanner»:
Картинку можно скачать предварительно из сети Internet. Приведу в пример пару png-изображений сканера:
- Scanner1.png (35.81 КБ) 12827 просмотров
-
Делаем запуск скомпилированного кода прямо из интерфейса «Ribbon XML Editor» (открываем созданный нами xml документ в MS Word):
-
Надо добавить, что указанный xml код не только добавляет кнопку «Сканировать» на вкладку «Главная» ленты MS Office Word, но и переносит редко используемую группу «Стили» на вкладку ленточного меню «Разное».
В итоге в нашем документе (но не во всех документах MS Word) получаем вкладку «Главная» без лишних кнопок стилей, но с нужной кнопкой «Сканирование»:
-
Закрываем «Ribbon XML Editor» (а MS Word 2007 с нашим документом оставляем открытым)
Этап второй. Отображение кнопки «Сканировать» на ленте всех документов Microsoft Word 2007, а не только в том, который мы только что создали.
-
Сохраняем этот наш документ с кнопкой «Сканировать» как шаблон с поддержкой макросов (dotm):
-
Закрываем все экземпляры MS Word
-
Переименовываем только что сохраненный файл в «Normal.dotm»
-
Открываем папку своих шаблонов: %appdata%\Microsoft\Шаблоны
-
Переименовываем старый файл шаблонов «Normal.dotm» в «Normal1.dotm»
-
Копируем наш новый файл «Normal.dotm» в папку %appdata%\Microsoft\Шаблоны:
То есть на данном этапе мы заменили стандартный файл шаблонов MS Office Word на свой файл, с кнопкой «Сканировать», созданный на предыдущем этапе.
Этап третий. Создание в стандартном шаблоне MS Word подписанного макроса (то есть непосредственно исполняемого кода VBA) для вызова интерфейса сканирования
-
Создаем свою новую электронную подпись, для чего запускаем «Microsoft Office» -> «Средства Microsoft Office» -> «Цифровой сертификат для проектов VBA»:
-
Задаем произвольное имя, например «MyMacroces»:
-
Cоздаем сертификат:
-
Открываем Word 2007 (любой файл или новый документ)
-
Отображаем панель «Разработчик» (Кнопка«Office» -> «Параметры Word»:
-> Вкладка «Основное» -> ставим галочку «Показывать вкладку «разработчик» на ленте»:
-
Открываем редактор «Visual Basic»
-
В общей книге «Normal» (для того, чтобы код модуля был доступен из любого файлика MS Word) создаем новый модуль с произвольным именем, например «Module1»:
-
Копируем в него код вызова сканера:
Код: Выделить всё
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 (вручную) создать новую кнопку на ленте с запуском макроса.
-
Подписываем наш модуль созданным сертификатом: «Tools» -> «Digital Signature»:
-> Раздел «Подпись» -> Кнопка «Выбрать»:
- 07.JPG (12.7 КБ) 12825 просмотров
-> Выбираем только что созданный сертификат:
-> «ОК»:
- 06.JPG (13.38 КБ) 12825 просмотров
-
Сохраняем шаблон «Normal» (Ctrl+s) и закрываем Visual Basic
В итоге имеем во всех документах MS Word 2007 текущего пользователя «причесанную» «Главную» вкладку ленты быстрого доступа с кнопкой «Сканировать», которая вызывает подписанный макрос из общей книги макросов :
Архив с готовым шаблоном «Normal.dotm» можно скачать здесь для MS Word 2007:
и здесь для MS Word 2010:
В статье использовались материалы:
-
Общие сведения - Ribbon XML Editor (бесплатно) - Поддержка ПО - Сайт Максима Новикова
-
Сканирование и MS Office 2010 - как сканировать в многостраничный файл tiff
-
® MICROSOFT.OFFICE.2010 ► Делаем кнопку сканирования в Word 2010!
-
Как добавить на ленту Excel 2007 вкладку с кнопками для своих макросов
[b][size=150]Проблема:[/size][/b]
Как известно, начиная с Office 2007, компания Microsoft стала использовать ленточный интерфейс меню. Конечно, ко всему можно привыкнуть, но как-то вот сильно напрягает то, что нельзя никак этот интерфейс менять. То есть ни добавить нужную кнопку - ни удалить лишнюю. Однако, уже в Microsoft Office 2010 возможность добавлять/удалять кнопки на ленту появилась, правда, по сравнению с Microsoft Office 2003 эта возможность сильно урезана.
Вот почему хочется поделиться опытом полноценной правки ленточной панели меню.
[b][size=150]Решение:[/size][/b]
В этом примере мы будем добавлять кнопку «[b][i]Сканировать[/i][/b]» на ленту Microsoft Office 2007. Почему именно такой выбор - да потому что начиная с Office 2007, компания Microsoft удалила из Word возможность сканировать прямо в документ, предписывая пользоваться специальным инструментом «[b]Microsoft Office Document Scanning[/b]».
Однако мы, люди привыкшие к удобной функции прямо в интерфейсе MS Word 2003 «[b][i]Вставка[/i][/b]» -> «[b][i]Рисунок[/i][/b]» -> «[b][i]Со сканера или камеры[/i][/b]»
[spoiler title=Так было в Office 2003][attachment=27]24.JPG[/attachment][/spoiler]хотим вернуть такую удобную кнопку на панель инструментов.
Итак, начнем.
Если у нас установлен MS Office 2010, то первый и второй этапы можно пропустить, создав кнопку «[b][i]Сканировать[/i][/b]» непосредственно в интерфейсе MS Word 2010 и привязав ее к макросу, создаваемому на третьем этапе.
[hr][/hr]
[b][size=130][center]Этап первый. Отображение кнопки «Сканировать» на ленте Microsoft Word 2007.[/center][/size][/b]
[list=1][*] Скачиваем бесплатный редактор xml тэгов, [url=http://www.zahodi-ka.ru/wbmaster/floadc/dload.fcgi?fid=1264094799]Ribbon XML Editor[/url] предназначенный специально для переработки меню MS Word 2007-2010.
Зеркало здесь: [attachment=26]RibbonXMLEditor_4.1.7z[/attachment]
Поскольку в нашем примере мы будем использовать этот редактор лишь узконаправленно а «[b]Ribbon XML Editor[/b]» на самом деле очень полезный, функциональный и главное - простой редактор, то для полного понимания его работы стоит почитать статьи его автора:
[list][*] Домашняя страничка редактора «[url=http://novikovmaxim.narod.ru/index.htm?http://novikovmaxim.narod.ru/products/ribbon/ribbon.htm]Ribbon XML Editor[/url]»
[*] [url=http://novikovmaxim.narod.ru/index.htm?http://novikovmaxim.narod.ru/statyi/ur_progr/word2007/word07_1.htm]Статья 1[/url]
[*] [url=http://novikovmaxim.narod.ru/index.htm?http://novikovmaxim.narod.ru/statyi/ur_progr/word2007/word07_2.htm]Статья 2[/url]
[*] [url=http://novikovmaxim.narod.ru/index.htm?http://novikovmaxim.narod.ru/statyi/ur_progr/word2007/word07_3.htm]Статья 3[/url][/list]
[*] Распаковываем скачанный архив и запускаем редактор «[b]Ribbon XML Editor[/b]»
[*] Создаем на рабочем столе документ MS Word, открываем его, делаем какое-нибудь изменение и сохраняем. Это важно, иначе «[b]Ribbon XML Editor[/b]» будет ругаться [quote]«EZipReader: Не найдена сигнатура END_OF_CENTRAL_DIR_SIGNATURE»[/quote]
[spoiler][attachment=25]17.jpg[/attachment][/spoiler]
[*] Открываем этот документ MS Word при помощи «[b]Ribbon XML Editor[/b]», прямо из интерфейса редактора:
[spoiler][attachment=24]16.jpg[/attachment][/spoiler]
[*] Поскольку собственных меню в этом файле мы не создавали, то и окно редактора «[b]Ribbon XML Editor[/b]» будет чистым:
[spoiler][attachment=23]18.jpg[/attachment][/spoiler]
[*] Вставляем в редактор следующий код:
[code]<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>[/code]
Здесь параметру «[b][i]onAction[/i][/b]» присваивается имя макроса «[b][i]InsertFromScanner[/i][/b]» из общей книги макросов, который мы будем создавать на третьем этапе.
[*] Добавляем в проект картинку (которая будет иконкой на нашей кнопке) в формате [i]png, bmp, tif, tiff, ico, emf, wmf[/i] и именем «[b][i]Scanner[/i][/b]»:
[spoiler][attachment=22]20.jpg[/attachment][/spoiler]
Картинку можно скачать предварительно из сети Internet. Приведу в пример пару png-изображений сканера:
[spoiler][attachment=20]Scanner.png[/attachment] [attachment=21]Scanner1.png[/attachment][/spoiler]
[*] Делаем запуск скомпилированного кода прямо из интерфейса «[b]Ribbon XML Editor[/b]» (открываем созданный нами xml документ в MS Word):
[spoiler][attachment=19]19.jpg[/attachment][/spoiler]
[*] Надо добавить, что указанный xml код не только добавляет кнопку «[b][i]Сканировать[/i][/b]» на вкладку «[b][i]Главная[/i][/b]» ленты MS Office Word, но и переносит редко используемую группу «[b][i]Стили[/i][/b]» на вкладку ленточного меню «[b][i]Разное[/i][/b]».
В итоге в нашем документе (но не во всех документах MS Word) получаем вкладку «[b][i]Главная[/i][/b]» без лишних кнопок стилей, но с нужной кнопкой «[b][i]Сканирование[/i][/b]»:
[spoiler][attachment=18]01.JPG[/attachment][/spoiler]
[*] Закрываем «[b]Ribbon XML Editor[/b]» (а MS Word 2007 с нашим документом оставляем открытым)[/list]
[hr][/hr]
[b][size=130][center]Этап второй. Отображение кнопки «[i]Сканировать[/i]» на ленте всех документов Microsoft Word 2007, а не только в том, который мы только что создали.[/center][/size][/b]
[list=1][*] Сохраняем этот наш документ с кнопкой «[b][i]Сканировать[/i][/b]» как шаблон с поддержкой макросов (dotm):
[spoiler][attachment=3]21.jpg[/attachment][attachment=4]22.jpg[/attachment][/spoiler]
[*] Закрываем все экземпляры MS Word
[*] Переименовываем только что сохраненный файл в «[b][i]Normal.dotm[/i][/b]»
[*] Открываем папку своих шаблонов: [b][i]%appdata%\Microsoft\Шаблоны[/i][/b]
[*] Переименовываем старый файл шаблонов «[b][i]Normal.dotm[/i][/b]» в «[b][i]Normal1.dotm[/i][/b]»
[*] Копируем наш новый файл «[b][i]Normal.dotm[/i][/b]» в папку [b][i]%appdata%\Microsoft\Шаблоны[/i][/b]:
[spoiler][attachment=2]23.jpg[/attachment][/spoiler]
То есть на данном этапе мы заменили стандартный файл шаблонов MS Office Word на свой файл, с кнопкой «[b][i]Сканировать[/i][/b]», созданный на предыдущем этапе.[/list]
[hr][/hr]
[b][size=130][center]Этап третий. Создание в стандартном шаблоне MS Word [i]подписанного[/i] макроса (то есть непосредственно исполняемого кода VBA) для вызова интерфейса сканирования[/center][/size][/b]
[list=1][*] Создаем свою новую электронную подпись, для чего запускаем «Microsoft Office» -> «Средства Microsoft Office» -> «Цифровой сертификат для проектов VBA»:
[spoiler][attachment=11]03.JPG[/attachment][/spoiler]
[*] Задаем произвольное имя, например «[b][i]MyMacroces[/i][/b]»:
[spoiler][attachment=10]04.JPG[/attachment][/spoiler]
[*] Cоздаем сертификат:
[spoiler][attachment=9]05.JPG[/attachment][/spoiler]
[*] Открываем Word 2007 (любой файл или новый документ)
[*] Отображаем панель «[b][i]Разработчик[/i][/b]» (Кнопка«[b][i]Office[/i][/b]» -> «[b][i]Параметры Word[/i][/b]»:
[spoiler][attachment=17]10.jpg[/attachment][/spoiler]
-> Вкладка «[b][i]Основное[/i][/b]» -> ставим галочку «[b][i]Показывать вкладку «разработчик» на ленте[/i][/b]»:
[spoiler][attachment=16]11.jpg[/attachment][/spoiler]
[*] Открываем редактор «[b][i]Visual Basic[/i][/b]»
[spoiler][attachment=15]12.jpg[/attachment][attachment=14]13.jpg[/attachment][/spoiler]
[*] В общей книге «[b][i]Normal[/i][/b]» (для того, чтобы код модуля был доступен из любого файлика MS Word) создаем новый модуль с произвольным именем, например «Module1»:
[spoiler][attachment=13]14.jpg[/attachment][/spoiler]
[*] Копируем в него код вызова сканера:
[code]Sub InsertFromScanner(ByVal Control As IRibbonControl)
On Error Resume Next
WordBasic.InsertImagerScan
End Sub
Sub InsertFromScanner1()
On Error Resume Next
WordBasic.InsertImagerScan
End Sub[/code]
Здесь создается два макроса:
первый - в который при вызове передается параметр «[b][i](ByVal Control As IRibbonControl)[/i][/b]» - это нужно для того, чтобы макрос вызывался кнопкой, которую мы создали на ленте (соответственно, имя макроса должно совпадать с тем именем, которое мы присвоили параметру «[b][i]onAction[/i][/b]» в xml шаблоне, созданном на первом этапе).
второй - с вызовом без параметров- на всякий случай, если, например в MS Office 2010 захочется просто из интерфейса MS Word (вручную) создать новую кнопку на ленте с запуском макроса.
[spoiler][attachment=12]15.jpg[/attachment][/spoiler]
[*] Подписываем наш модуль созданным сертификатом: «[b][i]Tools[/i][/b]» -> «[b][i]Digital Signature[/i][/b]»:
[spoiler][attachment=8]02.JPG[/attachment][/spoiler]
-> Раздел «[b][i]Подпись[/i][/b]» -> Кнопка «[b][i]Выбрать[/i][/b]»:
[spoiler][attachment=7]07.JPG[/attachment][/spoiler]
-> Выбираем только что созданный сертификат:
[spoiler][attachment=6]08.JPG[/attachment][/spoiler]
-> «[b][i]ОК[/i][/b]»:
[spoiler][attachment=5]06.JPG[/attachment][/spoiler]
[*] Сохраняем шаблон «Normal» (Ctrl+s) и закрываем Visual Basic[/list]
В итоге имеем во всех документах MS Word 2007 текущего пользователя «причесанную» «[b][i]Главную[/i][/b]» вкладку ленты быстрого доступа с кнопкой «[b][i]Сканировать[/i][/b]», которая вызывает подписанный макрос из общей книги макросов :[attachment=18]01.JPG[/attachment]
Архив с готовым шаблоном «[b][i]Normal.dotm[/i][/b]» можно скачать здесь для MS Word 2007: [attachment=1]Normal.rar[/attachment]
и здесь для MS Word 2010: [attachment=0]Normal.rar[/attachment]
В статье использовались материалы:[list=1][*] [url=http://novikovmaxim.narod.ru/index.htm?http://novikovmaxim.narod.ru/products/ribbon/ribbon.htm]Общие сведения - Ribbon XML Editor (бесплатно) - Поддержка ПО - Сайт Максима Новикова[/url]
[*] [url=http://sysrtfm.ru/msoffice/skanirovanie-i-ms-office-2010/]Сканирование и MS Office 2010 - как сканировать в многостраничный файл tiff[/url]
[*] [url=http://staiki.net/delaem-knopku-skanirovaniya-v-word-2010-t22743.html]® MICROSOFT.OFFICE.2010 ► Делаем кнопку сканирования в Word 2010![/url]
[*] [url=http://forums.kuban.ru/f1025/kak_dobavit-_na_lentu_excel_2007_vkladku_s_knopkami_dlya_svoih_makrosov-3795572.html]Как добавить на ленту Excel 2007 вкладку с кнопками для своих макросов[/url][/list]