Каммингс Стив
Шрифт:
Приведенный ниже код проводит поиск абзацев, которым в данный момент назначен стиль Drab, после чего назначает им стиль Frilly:
With Selection.Find
.ClearFormatting
.Style = "Drab"
.Text = ""
With .Replacement
ClearFormatting
.Style •= "Drilly"
.Text = ""
End With
.Execute Replace := wdReplaceAll
.ClearFormatting
.Replacement.ClearFormatting
End With
Включение двух инструкций ля "очистки формата" в вашу процедуру после метода Execute - очень неплохая идея. В противном случае, когда пользователь в следующий раз прибегнет к диалоговому окну Найти и заменить, ему придется сбрасывать все параметры форматирования вручную.
Использование переменных документа
Отличаясь от остальных приложений Office, Word позволяет определять в вашем коде специальные переменные документа, которые сохраняются вместе с документом. Переменные документа позволяют сохранять используемые процедурой значения между сеансами редактирования.
Переменные документа создаются и используются как члены коллекции Variables в данном документе. Как и обычные документы, переменные документа характеризуются именами. Приведенная ниже инструкция присваивает значение переменной Henry обычной переменной FriendOf Anais;
FriendOfAnais = _
ActiveDocument.Variable("Henry").Value
Для создания новой переменной документа используется метод Add коллекции Variables, как показано ниже:
Documents("Documentl").Variables.Add _
Name := "TimeThisMacroHasRun", Value := 0
Вы получите сообщение об ошибке, если попытаетесь добавить уже существующую переменную документа, поэтому я рекомендую вам проверить существование соответствующего имени, прежде чем создавать новую переменную. Если это так, вы сможете получить текущее значение переменной; если нет, вы можете создать переменную и назначить ее исходное значение. Этот прием проиллюстрирован следующим примером:
For Each DocVar In ActiveDocument.Variables
If DocVar.Name = "Last Caption" _
Then Doclndex = DocVar.Index
Next DocVar
If DocEndex = 0 Then
ActiveDocument.Variables.Add _
Name := "Last Caption", Value := 1
CaptionCounter = 1
Else
CaptionCounter = _
ActiveDocument.Variables(DocIndex).Value
End If
Несмотря на то, что объектные модели других приложений Office не позволяет явно создавать переменные документа, вы можете создавать пользовательские свойства документа для решения определенных задач. Подробные сведения об использовании пользовательских свойств в качестве переменных документа изложены в главе 14.
Глава 16. VBA-программирование в Excel.
В этой главе ...
~ Что такое объектная модель Excel
~ Управление ячейками с использованием объектов диапазонов
~ Создание собственных функций для использования в формулах рабочих листов
~ Использование встроенных функций Excel в VBA-коле
~ Работа с событиями Excel
Каждого, кто когда-либо писал формулы рабочих листов, можно считать в некотором роде программистом; поэтому не следует относиться к VBA, как к чему-то запредельному. Скорее всего, после некоторой работы с редактором Visual Basic вы обнаружите, что писать VBA-код, на самом деле, удобнее, чем составлять формулы непосредственно в рабочем листе; VBA предоставляет больший простор для деятельности в окне редактирования кода и позволяет вносить комментарии, что бывает очень полезным.
Кроме того, VBA может служить мощным инструментом для создания настраиваемых приложений, базирующихся на таблицах, способных выполнять вычисления и форматирования, которые без них просто не реальны. Но прежде чем стать профессионалом в использовании кодов Excel, чему способствует представленный ниже материал, следует ознакомиться с основами VBA, которые даются в первых трех разделах.
Знакомство с объектной моделью Excel
Прежде чем приступить к написанию VBA-кода для Excel, необходимо составить представление об иерархии объектов Excel и о том. как определять их в написанном коде. В самом верху иерархии находится объект Application (Приложение), отвечающий за функционирование всей программы Excel.
Для увеличения скорости работы многих VBA-программ следует отключить обновление экрана. По умолчанию Excel отображает каждое изменение в рабочей книге, сделанное в ходе выполнения VBA-кода. Это приводит к существенному снижению быстродействия. Для отключения такого режима работы Excel необходимо воспользоваться функцией ScreenUpdating (Обновление экрана) объекта Application:
Application . ScreenUpriatirig = False
Не забудьте в конце процедуры восстановить значение True для свойства ScreenUpdating, в противном случае пользователь не сможет увидеть на экране полученный результат.
При использовании свойства Screer.Upcating необходимо явно указывать имя объекта Application. Однако в большинстве случаев свойства объекта Application можно использовать напрямую. Например, свойство ActiveSheet объекта Application относится к рабочему листу или диаграмме, активной в текущий момент (безусловно, в книге, активной сейчас). Для обращения в коде к такому листу вместо записи Application .ActiveSheet можно использовать просто ActiveSheet. Коллекция Workbooks объекта Application содержит все рабочие книги, открытые в данный момент.