9 Июнь 2008

4. Поиск и замена текста

Способность находить текст, содержащийся в документе, и в случае необхо­димости заменять его является существенной частью многих прикладных реше­ний Office. При непосредственном использовании приложения Word для выпол­нения таких задач вы, наверное, уже использовали диалоговые окна Find и Find and Replace. В программах VBA объект Find реализует те же функции, что и вышеупомянутые диалоговые окна.

Оба объекта — Selection и Range -~ имеют свойство Find, которое содержит ссылку на объект Find. Ее можно использовать для поиска в выделении или диапазоне. Общая процедура представлена ниже.

Определяется выделение или (более часто) диапазон, который содержит
документ, в котором должен быть выполнен поиск.

Устанавливаются свойства объекта Find, в которых задаются детали поиска.

Вызывается метод Execute объекта Find для выполнения поиска.

(Свойства, выде­ленные звездочкой, совместно используются и объектом Replacement.)

Объект Replacement используется, когда производится поиск с заменой. Он имеет свойства, помеченные звездочкой в табл. 5.5, которые можно использовать для задания текста замены или форматирования. На примерах далее будет пока­зано, как работать с этими объектами.

Объект Find имеет два метода, о которых необходимо знать. Метод ClearAll-Formatting удаляет все параметры форматирования, которые ранее были уста­новлены. При этом следующая операция поиска будет исключительно текстовой. Хорошей практикой считается вызов этого метода при каждом использовании объекта Find. Это гарантирует удаление установок форматирования предыдущих операций. Метод Execute выполняет операции поиска и замены в соответствии с установленными параметрами. Этот метод принимает множество необязательных аргументов, которые соответствуют свойствам объекта Find. Другими словами, параметры операции поиска можно задать либо непосредственной установкой свойств объекта Find, либо передачей соответствующих аргументов методу Exe­cute (или и тем, и другим). Таким образом, следующие два фрагмента програм­мы являются эквивалентными (в них подразумевается, что Range 1 — это ссылка на объект Range):

With Rangel.Find

.Forward=True

.Text=”Bill Clinton”

.Wrap=wdFindContinue

.Execute End With

Rangel.Find.Execute Forward:=True,Text:=”Bill Clinton”, _ Wrap:=wdFindContinue

3. Объекты Selection и Range. Свойства и методы

написано в рубрике: Информационные технологии (Т) — Метки: , , , — Михаил @ 21:20

Объект Selection представляет собой выделенный текст в документе. Этот объект всегда существует, даже если никакого текста не выделено. Доступ к этому объекту осуществляется посредством объектов window, Application и Pane, а не с помощью объекта Document. Это может показаться странным, но все работает именно таким образом из-за того, что объект Selection связан с тек­стом, который выделен на экране. Но так как этот объект является глобальным, к нему можно получить доступ непосредственно в Word.

С помощью свойства Туре объекта Selection можно определить тип текущего выделения. Все значения, которые может иметь это свойство, определяются гло­бальными константами (которые можно просмотреть в Object Browser, как было описано в главе 4). Их имена достаточно понятно описывают тип выделения. Например, wdSelectionRow соответствует выделенной строке в таблице. Два ти­па выделения, которые используются наиболее часто — это wdSelectionNormal, соответствующий выделению обычного текста, и wdSelectionIP, соответствую­щий отсутствию выделенного текста. (В этом случае объект Selection совпадает с точкой ввода).

Действия, которые можно производить с объектом Selection, разбиваются на две категории: изменение выделения так, чтобы оно включало другую часть до­кумента, и изменение-текста внутри выделения. Объект Selection имеет свой­ства, которые содержат информацию о выделенном тексте и методах, которыми производятся манипуляции с ним. (Звездочкой помечены те свойства и методы, которые применимы и К объекту Range.)

Теперь давайте рассмотрим несколько примеров. Следующий фрагмент пере­мещает точку вставки в конец основного текста документа:

If Selection.StoryType=wdMainTextStory Then Selection.Move Unit:=wdStory, Count:=1 End If

2. Создание, сохранение и закрытие документов

Открытие и закрытие документов

Для создания нового документа используется метод Add коллекции Documents. Его синтаксис следующий:

Dim MyDoc as Word.Document

Set MyDoc = Documents.Add{Template, NewTemplate)

Аргумент Template задает имя шаблона, на котором будет основываться но­вый документ. Аргумент NewTemplate определяет, будет ли сам новый документ шаблоном (NewTemplate=True) или обычным документом (NewTemplate=False). Эти два аргумента метода не являются обязательными. Если они опущены, соз­дается обычный документ, основанный на шаблоне Normal.

Создать новый документ и присвоить ему имя можно одновременно, например:

Dim MyDoc As Word.Document Document s.Add.SaveAs(Fi1eName) Set MyDoc=Documents(Fi1eName)

Если документу во время его создания не присваивается имя, это имя следует присвоить при первом его сохранении, как будет показано в следующем разделе. Для открытия с диска существующего документа используется метод Open:

Dim MyDoc As Word.Document

Set MyDoc = Documents.Open(FileName)

Аргумент FileName задает путь и имя файла открываемого документа. Если заданный файл не существует или не является допустимым документом Word, возникает ошибка. Существуют средства, которые можно использовать для предотвращения ошибки типа “file not found“. Одним из них является объект Dialog, который позво­ляет пользователю выбрать нужный файл. Вторым является объект FileSearch, который используется для про­верки существования заданного файла перед попыткой открыть его.

Сохранение и закрытие документов

Метод Close объекта Document используется для закрытия документа. Его синтаксис представлен ниже (предполагается, что MyDoc — ссылка на документ):

MyDoc.Close(SaveChanges, OriginalFormat, RouteDocument)

Аргумент SaveChanges определяет, должен ли перед закрытием документ быть сохранен. Возможными значениями его могут быть следующие константы: wdDoNotSaveDocument (не сохранять документ), wdPromptToSaveChanges (запро­сить сохранение изменений) и wdSaveChanges (сохранить изменения).

Аргумент OriginalFormat задает формат, в котором будет сохранен доку­мент. Возможны следующие варианты значений: wdOriginalDocumentFormat (исходный формат документа), wdPromptUser (запросить пользователя) и wdWordDocument (формат документа Word).

Аргумент RouteDocument может иметь значения True и False (по умолча­нию), он определяет, должен ли документ отсылаться следующему получателю в списке распределения (routing). Значение True,не будет иметь смысла, если до­кумент не имеет присоединенного к себе списка рассылки.

Все открытые документы можно закрыть, используя метод Close коллекции Documents. Его аргументы — те же, что и для вышеописанного метода объекта Document.

1. Объектная модель Word

Приложение Word предназначено для создания документов, которые затем могут быть распечатаны или помещены на странице в Интернет. В приложении все вращается вокруг концепции документа, которым может быть все, что угодно — от 2-строчной записки, до 500-страничного многотомного отчета. Ос­новными функциями приложения Word является ввод и редактирование текста, форматирование внешнего вида текста и его размещения на странице, помеще­ние текста в колонки и таблицы. Также поддерживаются особые элементы, такие как верхние и нижние колонтитулы, номера страниц, индексы, и таблицы. Word также имеет встроенный словарь для проверки правописания и орфогра­фии и тезаурус для нахождения синонимов. Если ваше приложение должно ра­ботать с текстом, вам следует, прежде всего, посмотреть на среду приложения Word.

Истории в документе

Каждый документ Word состоит из некоторого количества историй, которые представляют разные части документа: основной текст, первую страницу, заго­ловок, примечания и т.д. Каждая история представлена объектом Range, содер­жащим ее. Доступ к историям можно получить посредством коллекции sto-ryRanges, которая принадлежит объекту Document. В отличие от других кол­лекций, StoryRanges не имеет метода Add. Истории создаются автоматически и помещаются в коллекцию, когда в них появляется некоторое содержание. Одна­ко главная текстовая история существует независимо от того, содержит она текст или нет. Для ссылок на разные истории служат следующие константы.

WdCommentsStory (комментарии);

WdEndNotesStory (примечания);

WdEvenPagesFooterStory (нижний колонтитул нечетных страниц);

WdEvenPagesHeaderStory (верхний колонтитул нечетных страниц);

WdFirstPageFooterStory (нижний колонтитул первой страницы); WdFirstPageHeaderStory (верхний колонтитул первой страницы); WdFootNotesStory (сноски); wdMainTextstory (основной текст);

WdPrimaryFooterStory (основные нижние колонтитулы); WdPrimaryHeaderStory (основные верхние колонтитулы); WdTextFrameStory (рамки).

Ссылку на конкретную историю можно получить следующим образом:

Dim StoryRange as Word.Range

Set StoryRange=MyDoc.StoryRanges (StoryType)

Здесь StoryType — одна из вышеперечисленных констант. Но если заданная история не присутствует в документе, возникает ошибка. Эту ошибку можно пе­рехватить но все же во избежание этой потен­циальной проблемы следует пройти в цикле по коллекции StoryRanges, чтобы проверить, существует ли данная история:

Dim StoryRange as Word.Range

Dim R As Word.Range

Dim StoryExists As Boolean

StoryExists=False

For Each R In MyDoc.StoryRanges

If R.StoryType=wdPrimaryHeaderStory Then Set StoryRange=R StoryExists=True

End If Next R If Not StoryExists Then

MsgBox (”The Primary Header Story does not exists.”) End If

А вот фрагмент программы, который добавляет текст “Compiled by R.Smithв конец существующего текста в основных нижних колонтитулах:

Dim R As Word.Range

Dim S As String

For Each R In ActiveDocument.StoryRanges

If R.StoryType=wdPrimaryFooterStory Then

S=R.Text End If Next R

ActiveDocument.Selections (1).Footers _ (WdPrimaryFooterStory). _ Range.Text=S & “Compiled by R.Smith”

© Проект «Студенты-Программеры»., 2008. Все права защищены.
Перепечатка материалов только при наличии активной ссылки на источник.
Powered by WordPress