Не волнуйтесь, я сейчас все объясню! Включение вкладки «Разработчик». Дополнительные операции по настройке Word
Конструирование интерфейсов чаще всего используется при создании надстроек. Надстройка представляет собой невидимый документ со встроенным VBA-кодом и с собственными дополнениями к интерфейсу, автоматически открываемый приложением при запуске. При запуске он не показывает своё тело (т.е. содержимое документа — текст, рисунки и пр.), а проявляется только своими изменениями в интерфейсе и подключенными макросами. Таким образом, приложение Microsoft Office дополняет свой функционал, и позволяет редактировать другие документы, используя вновь полученные функции.
Документ надстройки для Word имеет расширение.dotm. Фактически, надстройка для Word является обычным шаблоном с поддержкой макросов. Для надстроек Excel и PowerPoint имеются отдельные расширения — .xlam и.ppam соответственно.
Замечу, что надстройки.xlam и.ppam просто так не открываются в приложениях в качестве документа для редактирования, поэтому пока такая надстройка не готова, её сохраняют как обычный документ с поддержкой макросов. А вот шаблон.dotm можно открыть в Word именно как шаблон (по крайней мере, Ribbon XML Editor это делает), поэтому его можно сохранять шаблоном и в процессе разработки надстройки. Однако, я всё же рекомендую действовать единообразно, и исходники надстроек всегда держать в формате обычных документов с поддержкой макросов, и переводить их в шаблоны или надстройки только после полного окончания их разработки.
Итак, давайте попробуем построить надстройку Word, которая будет выглядеть, как отдельная вкладка, и содержать группу с кнопками, выполняющими некоторые действия. Пусть это будут некие действия с пробелами. Замечу, что процесс создания надстройки Excel ничем не отличается от создания надстройки Word и, умея создавать одно, вы будете уметь создавать другое.
Откроем Ribbon XML Editor, откроем в нём наш подопытный документ, и в окно для 2007-го интерфейса скопируем текст интерфейса нашей надстройки:
Ознакомьтесь с кодом интерфейса. Тут всё просто. Надстройка добавляет новую вкладку, и располагает на ней группу работы с пробелами, содержащую три кнопки. Для упрощения примера, в качестве иконок для кнопок я использовал максимально подходящие встроенные изображения. Вы можете использовать вместо них свои собственные, вы это уже умеете.
Первая кнопка удаляет все повторяющиеся пробелы. Довольно полезная функция, учитывая то, что правильная вёрстка в Word вообще не предполагает идущих подряд пробелов. Вторая кнопка преобразует все пробелы в переносы строк, а третья — обратное действие, т.е. переносы строк в пробелы. Тоже нужная функция для работы с последовательностями различных лексем.
Сгенерируем функции обратного вызова (Alt+F11 ). Скопируем шаблоны в буфер обмена (обращаем внимание на раскладку клавиатуры во избежание появления кракозябр). Закроем окно шаблонов и запустим документ. Перейдём в редактор Бейсика (Alt+F11 ) и вставим взятые в буфер обмена шаблоны функций вместо наших старых функций модуля RibbonCallbacks.
Теперь осталось написать на Бейсике нужные команды. Очевидно, нам понадобится функция поиска и замены. С помощью штатной функции записи макросов я выяснил, каким кодом осуществляется поиск и замена, и организовал это в виде отдельной функции, которую мы будем использовать внутри наших функций обратного вызова.
Итак, вставляем в код новую функцию:
"НайтиИЗаменить (компонент: button, атрибут: onAction), 2007
Sub НайтиИЗаменить(findString As String, replaceString As String)
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = findString
.Replacement.Text = replaceString
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
End Sub
Функция принимает на вход строку для поиска и строку для замены, а внутри функции вставлен код из макроса, который записывался во время реального поиска и замены. Несомненно, в нём много лишнего, так как все эти параметры наверняка имеют значения по умолчанию. Тем не менее, для надёжности я оставил всё как есть — хуже уж точно не будет.
Теперь заполняем шаблоны процедур обратного вызова:
"УдалитьПовторяющиесяПробелы (компонент: button, атрибут: onAction), 2007
Sub УдалитьПовторяющиесяПробелы(control As IRibbonControl)
Dim NumCharsBefore As Long, NumCharsAfter As Long
Do
NumCharsBefore = ActiveDocument.Characters.Count
Call НайтиИЗаменить(" ", " ")
NumCharsAfter = ActiveDocument.Characters.Count
Loop Until NumCharsBefore = NumCharsAfter
End Sub
"ПробелыВПереносыСтрок (компонент: button, атрибут: onAction), 2007
Sub ПробелыВПереносыСтрок(control As IRibbonControl)
Call НайтиИЗаменить(" ","^p")
End Sub
"ПереносыСтрокВПробелы (компонент: button, атрибут: onAction), 2007
Sub ПереносыСтрокВПробелы(control As IRibbonControl)
Call НайтиИЗаменить("^p", " ")
Call НайтиИЗаменить("^w^p", "")
End Sub
Как видите, код элементарен, ничего сложного. В первой функции мы организовываем цикл, в котором сдвоенные пробелы меняем на одинарные, и который будет выполняться до тех пор, пока при очередной его итерации размер текста до и после поиска и замены не останется равным. Это будет означать, что сдвоенных пробелов в тексте уже не осталось.
Две последние функции ещё более элементарны. Там просто вызывается наша функция по поиску и замене, которая меняет пробел на символ абзаца (^p) или наоборот. В последнем случае мы ещё и удаляем появившийся в конце текста из-за неубирающегося символа абзаца лишний пробел (^w — чистое пространство, например, пробелы или табуляция).
Сохраняем код, закрываем редактор Бейсика и сразу проверяем работу кнопок в документе. Замечу, что закрывать редактор Бейсика не обязательно, можно просто сохранить в нём изменения и переключиться в окно документа. Если кнопки заработали, как надо, сохраняем документ как шаблон с макросами (.dotm) в папку:
C:\Users\[ИмяПользователя]\AppData\Roaming\Microsoft\Word\STARTUP
Теперь добавим нашу надстройку. Закрываем всё, открываем Word, лезем в Файл -> Параметры -> Надстройки -> Управление, выбираем «Надстройки Word» и нажимаем кнопку «Перейти». В открывшемся окне на первой же вкладке нажимаем «Добавить…» и выбираем наш файл. Нажимаем «ОК», и наша надстройка начинает действовать.
В процессе работы с документами можно присоединять, добавлять и удалять шаблоны, стили, макросы и элементы автотекста. Эти функции доступны при выборе команды Шаблоны и надстройки в меню Сервис (рис. 47).
Измененные стили будут обновлены в существующих документах, только если установлен флажок Автоматически обновлять стили в диалоговом окне Шаблоны и надстройки.
Рис. 47.
Шаблоны и надстройкиПри работе с документом обычно используются только те элементы списка автотекста, макросы, настраиваемые панели инструментов, -меню и сочетания клавиш, которые хранятся в шаблоне, присоединенном к этому документу, или в шаблоне "Обычный".
Упражнение
Создание шаблона
1. Выберите команду Создать в меню Файл . Выберите шаблон Новый документ.
2. Установите переключатель Создать в положение Шаблон .
3. Нажмите кнопку ОК .
4. Отформатируйте шаблон следующим образом:
выберите команду Параметры страницы из меню Файл . Перед вами откроется
диалоговое окно Параметры страницы;
установите книжную ориентацию Книжная , открыв закладку Размер бумаги ;
выберите закладку Поля , щелкнув левой клавишей мыши, и установите значения:
Верхнее: (Тор:) - верхнее поле (2 см);
Нижнее: (Bottom:) - нижнее поле (2 см);
Левое: (Left:)-левое поле (3.5 см);
Правое: (Right) - правое поле (2 см).
Если вы печатаете многостраничный документ, но при этом используете только одну сторону листа (чаще всего на предприятиях документы печатаются на одной стороне листа), то опция Зеркальные поля должна быть отключена, т. е. квадратик слева не должен быть отмечен крестиком, а также в строке Переплет надо поставить нуль.
Если вы печатаете на листе с двух сторон, то опцию Зеркальные поля следует включить. К тому же можно добавить некоторое поле на переплет (не более 1 см) в строке Переплет. Величина добавляемого поля зависит от толщины сшиваемого документа.
1. Введите название предприятия и адрес.
2. Оформите название предприятия, выполнив команду Шрифт из меню Формат . Установите следующие опции: шрифт Aria l 18, полужирный, междустрочный интервал полуторный.
Создайте стиль Название на основе примененного форматирования.
3. Выберите команду Стиль в меню Формат для открытия диалогового окна Стиль .
4. Выберите Создать . Появляется диалоговое окно Создание стиля .
5. Введите имя нового стиля.
6. Вставьте дату исполнения в документ, выполнив команду Дата и время из меню Вставка и установите формат даты xx.xx.xx .
7. Введите и отформатируйте текст письма, как показано ниже.
8. Сохраните шаблон под именем Письмо_общий .dot.
9. Закройте шаблон.
(адрес отправителя)
АО "КУДИЦ-ОБРАЗ"
11 19021 Москва,
Комсомольский проспект, 12/1, стр. 3.
(адрес получателя)
Название организации
Уважаемый читатель!
Мы надеемся, что книга будет Вам полезной и интересной. Ваши отзывы и пожелания просим направлять автору.