Лекция Объекты Microsoft Word




Скачать 243.7 Kb.
НазваниеЛекция Объекты Microsoft Word
Дата конвертации28.10.2012
Размер243.7 Kb.
ТипЛекция

Лекция 6. Объекты Microsoft Word

Лекция 6. Объекты Microsoft Word

Document представляет открытый документ,

Bookmark — закладку в документе,

Selection — фрагмент, выделенный в одной из секций окна документа.

Работа с объектом Application

Запуская Word, Вы автоматически создаете объект Application.

Application. PrintPreview = True

Некоторые свойства объекта Application

свойство DisplayStatusBar установлено как True, строка состояния видима;

свойство WindowState содержит значение wdWindowStateMaximize, окно приложения развернуто.

With Application
.WindowState = wdWindowStateNormal
.Height = 450
.Width = 600
End With

набору Windows (представляет открытые в данный момент окна)

Documents (представляет открытые в данный момент документы).

Примечание: Объект Options включает ряд свойств, управляющих поведением всего приложения Word.

With Application.Options
.AIIowDragAndDrop = True
.ContirmConversions = False
.MeasurementUnit = wdPoints
End With


Работа с объектом Document

Set myDoc = Documents("Report.doc")

Set myDoc = Documents(1)

If Documents. Count >= 1 Then
MsgBox ActiveDocument. Name
Else
MsgBox "No documents are open"
End If

Set myDoc = Documents. Open(FileName := "TEST.DOC")

Dialogs(wdDialogFileOpen ). Show

Set dig = Dialogs(wdDialogFileOpen)
aButton = dig. Display
fSelected = dig. Name
If aButton = -1 Then
Documents. Open FileName: Selected
End If

Dim myDoc As Document
Set myDoc = Documents. Add
myDoc. PageSetup.TopMargin = lnchesToPoints(1.25)

ActiveDocument. SaveAs Filename := "Temp.doc"

Documents.Add.SaveAs FileName:="1996 Sales.doc"
Documents("1996 Sales.doc").Tables.Add _
Ranges := Selection. Range, NumRows:=2, NumColumns:=4

Documents( "Sales, doc"). Save NoPrompt := True

Documents( "MyDocument.doc"). Activate

Options. PrintHiddenText = True
ActiveDocument. PrintOut Range:=wdPrintFromTo, From:="1", To:="3"

Documents("Sales.doc"). Close SaveChanges := wdSaveChanges ‘wdDoNotSaveChanges

MsgBox ActiveDocument. Tables. Count & " tables in this document"

Set myTable = Documents('Sales.doc").Tables(1)

ActiveDocument. Tables. Add Range:=myRange, NumRows:=3, NumColumns:=3

ActiveDocument. Footnotes. Add Range := myRange, Text := "The Willow Tree"

Полный список наборов, поддерживающих метод Add, см. в разделе «Add Method» справочной системы.


Работа с объектом Range

При программировании на Visual Basic часто приходится определять в документе некую область, а затем выполнять над ней какую-либо операцию (например, вставлять в нее текст или изменять форматирование). Допустим, Вам нужен макрос, который отыскивает в какой-то части документа определенное слово или фразу. Представить эту часть позволяет объект Range. С помощью его свойств и методов Вы измените содержимое соответствующего диапазона.

Объект Range представляет непрерывную область в документе. Каждый объект Range определяется позициями первого и последнего символов. Вы используете эти объекты в процедурах Visual Basic так же, как и закладки в документах, — для идентификации определенных частей документа. Объект Range может представлять произвольный диапазон — от курсора ввода до целого документа. Но в отличие от закладки объект Range существует лишь в период выполнения процедуры, в которой он определен.

Объекты Range не зависят от выделенного фрагмента — Вы можете определять и модифицировать диапазон, не изменяя выделенного фрагмента. Кроме того, в тексте можно выделить только один фрагмент, а на количество диапазонов никаких ограничений не накладывается.

Свойства Start, End и StoryType уникально идентифицируют объект Range. Свойства Start и End позволяют получить или установить начальные и конечные символьные позиции объекта Range. Символьная позиция, равная 0, соответствует началу области (story), 1 — позиции за первым символом и т. д. Всего определены 11 различных типов областей, представляемых wdStoryТуре-константами свойства StoryType. Например, если объект Range находится в области сносок, свойство StoryType вернет значение wdFootnotesStory (подробнее см. раздел «Работа с областями» далее в этой главе).

Применение объекта Range вместо объекта Selection

Записав несколько макросов средствами Word и проанализировав их текст, Вы наверняка заметите, что в них часто используется свойство Selection для управления объектом Selection. Но ту же задачу можно решить, применяя один или несколько объектов Range; при этом макрос получается компактнее и, как правило, эффективнее. Вот макрос, записанный средствами Word (в нем первые два слова документа выделяются полужирным начертанием):

Selection. HomeKey Unit := wdStory
Selection. MoveRight Unit := wdWord, Count := 2, Extend := wdExtend
Selection. Font. Bold = wdToggle

А теперь то же самое без объекта Selection:

ActiveDocument. Range( Start := 0, End := ActiveDocument. Words(2). End). Bold =True

В следующем примере после выделения первых двух слов документа полужирным начертанием шрифта вставляется новый абзац:

Selection. HomeKey Unit:=wdStory
Selection. MoveRight Unit := wdWord, Count:=2, Extend := wdExtend
Selection. Font. Bold = wdToggle
Selection. MoveRight Unit := wdCharacter, Count := 1
Selection. TypeParagraph

И то же самое с помощью объекта Range:

Set myRange = ActiveDocurnent. Range(Start :=0, End := ActiveDocurnent. Words(2).End)
myRange. Bold = True
myRange. InsertParagraphAfter

В большинстве случаев объекты Range предпочтительнее объекта Selection по следующим причинам:

  • Вы можете определить и использовать несколько объектов Range, тогда как в каждом окне документа может быть только один объект Selection.

  • Операции с объектами Range не изменяют выделенный текст.

  • Операции с объектами Range проходят быстрее, чем с выделенным фрагментом.

Получение объекта Range методом Range

Для создания объекта Range в документе предназначен метод Range объекта Document. Этот метод возвращает объект Range, размещенный в основной области (main story) и представляющий заданный диапазон. В следующем примере мы создаем объект Range и присваиваем его переменной myRange:

Set myRange = ActiveDocurnent. Range( Start:=0, End:=10)

Здесь myRange представляет первые 10 символов активного документа. В следующем примере к первым 10 символам активного документа применяется полужирное начертание:

Set myRange = ActiveDocument. Range(Start:=0, End:=10) myRange. Bold = True

Создав специальную переменную myRange и закрепив за ней объект Range оператором Set, мы получили возможность многократно ссылаться на этот объект в своей программе. Если же объект нужен только для однократного использования, создавать отдельную переменную для его хранения нет никакого смысла. В таком случае создание диапазона и операцию над ним лучше свести в одну инструкцию:

ActiveDocument. Range(Start:=0. End:=10).Bold =True

По аналогии с закладкой диапазон может как охватывать группу символов, так и просто помечать какое-то место в документе. В следующем примере начальная и конечная границы объекта Range совпадают и диапазон не содержит никакого текста — он создается только для вставки текста в начало активного документа:

ActiveDocument. Range ( Start :=0, End : =0) . InsertBefore Text : = " Hello"

Начальную и конечную границы диапазона можно определить, используя символьные позиции (как в предыдущем примере) или свойства Start и End объектов Selection, Bookmark или Range. Создадим объект Range, ссылающийся на третье и четвертое предложения в активном документе:

Set myDoc = ActiveDocument
Set myRange = myDoc. Range (Start := myDoc. Sentences(3).Start, _
End := myDoc. Sentences(4).End)
aRange. Select

Совет: Объект Range не имеет визуального представления в документе. Чтобы убедиться, на правильный ли диапазон текста ссылается объект Range, . воспользуйтесь методом Select — он выделит соответствующий фрагмент текста. В следующем примере объект Range ссылается на первые три абзаца активного документа. После выполнения показанных ниже инструкций на экране будет выделен диапазон текста, содержащийся в переменной aRange.

Set aRange = ActiveDocument.Range(Start := 0, _
End := ActiveDocument. Paragraphs(3). Range. End)
aRange. Select

Получение объекта Range через свойство Range

Свойство Range есть у многих объектов (скажем, у Paragraph, Bookmark, Endnote или Cell) и возвращает объект Range. В следующем примере мы получаем объект Range, который ссылается на первый абзац активного документа:

Set myRange = ActiveDocument. Paragraphs(1). Range

Получив ссылку на объект Range, Вы можете использовать его свойства и методы для манипуляций с соответствующим диапазоном. Например, чтобы скопировать первый абзац активного документа:

Set myRange = ActiveDocument. Paragraphs(1). Range
myRange. Copy

А чтобы скопировать первую строку из первой таблицы активного документа:

ActiveDocument. Tables(1). Rows(1). Range. Copy

В следующем примере мы отображаем текст (активного документа), отмеченный первой закладкой (применяется свойство Range объекта Bookmark):

MsgBox ActiveDocument. Bookmarks(1). Range. Text

Оператор With...End With позволяет заметно упростить многократное обращение к свойствам и методам объекта Range. В следующем примере форматируется текст в первом абзаце активного документа:

Set myRange = ActiveDocument. Paragraphs(1). Range
With myRange
.Bold = True
.ParagraphFormat. Alignment = wdAlignParagraphCenter
.Font. Name = "Arial"
End With

Дополнительные примеры, иллюстрирующие применение свойства Range, см. в разделе «Range Property» справочной системы.

Изменение части документа

Visual Basic включает объекты, позволяющие изменять такие элементы документа, как символы, слова, предложения, абзацы и разделы. Свойства, соответствующие этим элементам, и объекты, возвращаемые ими, показаны в таблице:

Выражение

Возвращаемый объект

Words(index)

Range

Characters(index)

Range

Sentences(index)

Range

Paragraphs(index)

Paragraph

Sections(index)

Section

Используя эти свойства без указания индекса. Вы получаете одноименные наборы (например, свойство Paragraphs возвращает набор Paragraphs). Но задав индекс, Вы получите объект, указанный во второй колонке приведенной выше таблицы (например, Words(1) вернет объект Range). Для изменения объекта Range можно задействовать его свойства и методы — как в следующем примере, в котором первое слово выделенного фрагмента копируется в буфер обмена.

Selection. Words(1). Copy

Наборы Paragraphs и Sections содержат объекты Paragraph и Section соответственно, а не объекты Range. Однако свойство Range (возвращающее объект Range) предусмотрено и в этих двух объектах. В следующем примере первый абзац активного документа копируется в буфер обмена:

ActiveDocument. Paragraphs(1). Range. Copy

Свойства, перечисленные в предыдущей таблице, имеются также у объектов Document, Selection и Range. С их помощью можно установить регистр букв, например, в первом слове в активном документе:

ActiveDocument. Words(1). Case = wdUpperCase

или задать нижнее поле для первого выделенного раздела равным, допустим 0.5 дюйма:

Selection. Sections(1). PageSetup. BottornMargin = lnchesToPoints(0.5)

А в этом примере мы устанавливаем двойной межстрочный интервал. Для текста активного документа (свойство Content возвращает объект Range представляющий основную область документа):

Active Document. Content. ParagгаphFormat. Space2

Получение и изменение текста в диапазоне


Свойство Text объекта Range позволяет получить или изменить содержимое этого объекта. В следующем примере возвращается первое слово в активном документе:

strText = ActiveDocument. Words(1). Text

Чтобы заменить первое слово в активном документе на «Hello»:

ActiveDocument. Words(l). Text = "Hello"

Для вставки текста до или после текста, входящего в диапазон, применяются методы InsertAfter и InsertBefore. В следующем примере мы вставляем текст в начало второго абзаца активного документа:

ActiveDocument. Paragraphs(2). Range. InsertBetore Text := "ln the beginning"

После вызова метода InsertAfter или InsertBefore диапазон расширяется, включая в себя добавленный текст. В то же время метод Collapse позволяет «свернуть» диапазон к его началу или концу. В следующем примере мы вставляем слово «Hello» перед существующим текстом и «сворачиваем» диапазон к его началу (т. е. перед словом «Hello»):

With ActiveDocument. Paragraphs(2). Range
.InsertBefore Text := "Hello "
.Collapse Direction := wdCollapseStart
End With

Форматирование текста в диапазоне


Свойство Font обеспечивает доступ к свойствам и методам, связанным с форматированием символов, а свойство ParagraphFormat — к тем, что связаны с форматированием абзацев. В следующем примере мы применяем форматирование обоих видов к первому абзацу активного документа:

With ActiveDocument. Paragraphs(2). Range
.Font. Name = "Times New Roman"
.Size = 14
.AllCaps = True
End With

With ActiveDocument. Paragraphs(1). Range. ParagraphFormat
.LeftIndent = lnchesToPoints(0.5)
.Space1
End With

Перебор абзацев в диапазоне


Set myDoc = ActiveDocument
Set myRange = rnyDoc.Range(Start := myDoc.Paragraphs(1).Range.Start, _
End:=myDoc. Paragraphs(5). Range. End)
For Each para In myRange. Paragraphs
para. Range. InsertBefore "Question:" & vbTab
Next para

Использование свойства или метода Next

Set myRange = ActiveDocument. Paragraphs(1). Range
For i = 1 To 5
If myRange.Paragraphs(1).Alignment = wdAlignParagraphCenter Then
myRange.Paragraphs(1).Alignment = wdAlignParagraphLeft
End If
Set myRange = myRange. Paragraphs(1). Next. Range
Next i

Работа с областями


Область (story) содержит диапазон текста, отличного от того, что содержат другие текстовые области этого документа. Если документ, скажем, включает основной текст, сноски и верхние колонтитулы, он содержит область основного текста, область сносок и область верхних колонтитулов. Всего определено 11 типов областей, которым соответствуют следующие wdStoryType-константы: wdCommentsStory, wdEndnotesStory, wdEvenPagesFooterStory, wdEvenPagesHeaderStory, wdFirstPageFooterStory, wdFirstPageHeaderStory, wdFootnotesStory, wdMainTextStory, wdPrimaryFooterStory, wdPrimaryHeaderStory и wdTextFrameStory. Свойство StoryType позволяет определить тип области для конкретного диапазона, выделенного фрагмента или закладки. В следующем примере секция сносок в активном окне закрывается, если выделенный фрагмент находится в области сносок:

ActiveWindow. View. Type = wdNormalView
If Selection. StoryType = wdFootnotesStory Then ActiveWindow. ActivePane. Close

Набор StoryRanges содержит первый диапазон области для каждого типа области из числа имеющихся в документе. Используя метод NextStoryRange можно получить доступ к последующим областям. Вот пример поиска текста «Microsoft Word» в каждой области активного документа и выделения курсивом найденных вхождений этого текста:

For Each myStoryRange In ActiveDocument. StoryRanges
myStoryRange. Find. Execute FindText = ''Microsoft Word", Forward := True
While myStoryRange. Find. Found
myStoryRange. Italic = True
myStoryRange. Find. Execute FindText := ''Microsoft Word", _
Forward := True, Format := True
Wend
While Not (myStoryRange. NextStoryRange Is Nothing)
Set myStoryRange = myStoryRange. NextStoryRange
myStoryRange. Find. Execute FindText := "Microsoft Word". Forward:=True
While myStoryRange. Find. Found
myStoryRange. Italic = True
myStoryRange.Find.Execute FindText:="Microsott Word", _
Forward:=True, Format:=True
Wend
Wend
Next myStoryRange

Работа с объектом Selection

Работая с документом в Word, Вы обычно выделяете текст, а затем выполняете какое-то действие (например, форматируете существующий текст или вводите вместо него новый). В Visual Basic практически нет необходимости выделять текст перед его изменением — достаточно создать объект Range, ссылающийся на нужную часть документа. Но, когда в своей программе Вам все же понадобится получить или изменить выделенный фрагмент, объект Selection предоставит Вам эту возможность.

Чтобы получить доступ к объекту Selection, используйте свойство Selection. В каждой секции окна документа может быть единственный объект Selection, и только один такой объект может быть активен в данный момент. Выделенный фрагмент может охватывать определенную часть документа или маркировать точку ввода текста. В следующем примере изменяется формат выделенных абзацев:

Selection. Paragraphs. SpaceBetore = lnchesToPoints(0.25)

Свойством Selection наделены объекты Application, Window и Pane. Если Вы используете это свойство с объектом Application, объект Selection ссылается на активный выделенный фрагмент. В следующем примере мы вставляем текст после выделенного фрагмента (так как Selection — свойство глобальное, свойство Application можно опустить):

Selection. InsertAfter Text := "Next Text"

Свойство Selection, используемое с объектами Window или Pane, возвращает объект Selection для указанного окна или секции окна. В следующем примере через свойство Selection объекта Window вставляется текст в окно документа Document2:

Windows( "Document2"). Selection. InsertAfter Text := "New Text"

А в этом примере через свойство Selection объекта Pane вставляется текст секцию верхнего колонтитула:

With ActiveWindow
.View. Type = wdPageView
.View. SeekView = wdSeekPrirnaryHeader
.ActivePane. Selection. InsertAfter Text := "Header"
End With

После применения методов InsertAfter и InsertBefore выделенный фрагмент расширяется, с тем чтобы включить добавленный текст. Метод Collapse позволяет «свернуть» диапазон к его началу или концу. В следующем примере после выделенного текста вставляется слово «Hello», а затем выделенная фрагмент «сворачивается» к позиции ввода за словом «Hello»:

Selection. InsertAfter Text := "Hello"
Selection. Collapse Direction := wdCollapseEnd

Перемещение и расширение выделенного фрагмента

Перемещать или расширять границы выделенного фрагмента, представимого объектом Selection, можно несколькими способами (например, методом Move или MoveEnd). В следующем примере выделенный фрагмент перемещается к началу следующего абзаца:

Selection. MoveDown Unit := wdParagraph, Count :=1, Extend := wdMove

Перемещения или расширения границ выделенного фрагмента можно добиться и изменением значений свойств Start и End объекта Selection или применением методов MoveStart и MoveEnd. В следующем примере выделенный фрагмент расширяется до конца абзаца:

Selection. MoveEnd Unit := wdParagraph, Count:=1

Поскольку в окне или секции окна документа может быть лишь один выделенный фрагмент, переместить его можно и простым выделением другого объекта методом Select. После этого Вы получите объект Selection через свойство Selection. Например, выделим в активном документе первое слово и заменим на «Hello»:

ActiveDocument.Words(1). Select
Selection.Text := "Hello"

Переместить выделенный фрагмент позволяют и методы GoToNext, GoToPrevious или GoTo. В этом примере выделяется четвертая строка документе:

Selection. GoToWhat := wdGoToLine, Which := wdGoToAbsolute. Count :=4

А здесь выделенный фрагмент перемещается к следующему полю в активном документе:

Selection. GoToNext What := wdGoToField

Объекты, доступные через объект Selection

Многие из объектов, доступные через объекты Range и Document, доступны и через объект Selection, позволяя управлять объектами в выделенном фрагменте. Полный список этих объектов приведен в разделах «Microsoft Word Objects (Selection)» и «Selection Object» справочной системы.

В следующем примере в выделенном фрагменте обновляются поля:

if Selection. Fields. Count >= 1 Then Selection. Fields. Update

А в этом — создается абзацный отступ на 0.5 дюйма:

Selection. Paragraphs. LeftIndent = lnchesToPoints(0.5)

Если Вам не нужны все объекты в наборе, Вы можете воспользоваться циклом For Each...Next для перебора отдельных объектов выделенного фрагмента. В следующем примере организован перебор абзацев выделенного фрагмента, при этом все абзацы, выровненные по центру, выравниваются по левому краю:

For Each para In Selection. Paragraphs
If para.Alignment = wdAlignParagraphCenter Then para.Alignment = _
wdAlignParagraphLeft
Next para

А так можно перечислить имена всех закладок в выделенном фрагменте:

For Each aBook In Selection. Bookmarks
MsgBox aBook. Name
Next aBook

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

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

Получение или изменение текста в выделенном фрагменте

Свойство Text позволяет получить или установить содержимое объекта Selection. Чтобы получить выделенный текст:

strText = Selection. Text

А чтобы заменить выделенный текст на фразу «Hello world»:

Selection. Text = "Hello world"

Методы InsertBefore и InsertAfter позволяют вставлять текст перед выделенным фрагментом или после него. В следующем примере текст вставляется перед выделенным фрагментом:

Selection. InsertBefore Text := "And furthermore"

Форматирование выделенного текста

Свойство Font открывает доступ к свойствам и методам, связанным с форматированием символов, а свойство ParagraphFormat — к свойствам и методам связанным с форматированием абзацев. В следующем примере мы устанавливаем оба вида форматирования для выделенного фрагмента:

With Selection. Font
.Name = "Times New Roman"
.Size = 14
End With
Selection. ParagraphFormat. LeftIndent = lnchesToPoints(0.5)

Получение объекта Range

Если Вам понадобились какие-то свойства и методы, предусмотренные для объекта Range, но отсутствующие у объекта Selection (например, метод CheckSpelling), обратитесь к объекту Range через свойство Range объекта Selection. Например, чтобы проверить правописание выделенных слов:

Selection. Range. CheckSpelling

Получение информации о выделенном фрагменте

Для этого предназначено свойство Information. С его помощью можно определить номер текущей страницы, общее количество страниц в документе, а также выяснить, не находится ли выделенный фрагмент в верхнем или нижнем колонтитуле. Свойство Information принимает в качестве параметра 35 констант (в том числе wdActiveEndPageNumber, wdNumberOfPagesInDocument, wdInHeaderFooter), которые позволяют получать различные виды информации о выделенном фрагменте. В следующем примере мы проверяем, находится ли выделенный фрагмент в таблице, и, если да, сообщаем количество строк и столбцов в таблице:

If Selection. lnformation(wdWithlnTable) = True Then
MsgBox "Columns = " & Selection. lntormation(wdMaximumNumberOfCoiumns)
& vbCr & "Rows = " & Selection. lntormation(wdMaximumNumberOfRows)
End If

Полный список этих констант и их описание см. в разделе «Information Property» справочной системы.

Проверка наличия выделенного текста

Свойство Type позволяет узнать или изменить способ, которым выделенный фрагмент обозначается в документе.* Указав, допустим, константу wdSelectionBlock, можно определить, есть ли в документе блок выделенного текста. В следующем примере мы выделяем абзац, в котором находится курсор ввода:

If Selection. Type = wdSelectionIP Then
Selection. Paragraphs(1). Range. Select
End If


Работа с объектами Find и Replacement

Поиск и замену текстовых диапазонов в документе обеспечивают объекты Find и Replacement. Объект Find доступен из объекта Selection или Range (характер поиска зависит от того, какой из этих двух объектов Вы задействовали).

Использование Selection .Find

Если Вы обращаетесь к объекту Find через объект Selection, то выделенным фрагментом становится найденный текст. В примере, приведенном ниже, выделяется следующее вхождение слова «Hello» (если оно не встретится до конца документа, поиск прекратится):

With Selection. Find
.Forward = True
.Wrap = wdFindStop
.Text = "Hello"
. Execute
End With

Объект Find включает свойства, соответствующие параметрам в диалоговом окне Find and Replace (Найти и заменить) из меню Edit (Правка). Вы можете устанавливать эти свойства индивидуально или через аргументы метода Execute, как показано здесь:

Selection .Find. Execute FindText := "Hello", Forward := True, Wrap := wdFindStop

Использование Range. Find

Если Вы обращаетесь к объекту Find через объект Range, то текущий выделенный фрагмент так и остается выделенным — меняется диапазон, на который ссылается объект Range. В следующем примере мы отыскиваем первое вхождение слова «blue» в активном документе и, если оно найдено, применяем к нему полужирное начертание шрифта:

With ActiveDocument. Content. Find
.Text = "blue"
.Forward = True/
. Execute
If .Found = True Then .Parent. Bold = True
End With

А вот как сделать то же самое, используя аргументы метода Execute:

Set myRange = ActiveDocument. Content
myRange.Find.Execute FindText := "blue", Forward = True
If myRange. Find. Found = True Then myRange. Bold = True

Использование объекта Replacement

Объект Replacement представляет критерии замены для операции поиска и замены. Его свойства и методы соответствуют параметрам в диалоговом окне Find and Replace (Найти и заменить) из меню Edit (Правка).

Объект Replacement доступен через объект Find. В следующем примере заменяются все вхождения «hi» на «hello». Поскольку доступ к объекту Find осуществляется через объект Selection, то выделенным фрагментом становится найденный текст.

With Selection. Find
.ClearFormatting
.Text = "hi"
.Replacement. ClearFormatting
.Replacement. Text = "hello"
.Execute Replace := wdReplaceAII, Forward := True, Wrap := wdFindContinue
End With

В следующем примере мы удаляем в активном документе полужирное начертание шрифта. Для этого свойство Bold объекта Find устанавливается в True, а объекта Replacement — в False. Для поиска и замены элементов форматирования укажите в качестве искомого и заменяющего текста пустые строки («») и присвойте аргументу Format метода Execute значение True. Текущий выделенный фрагмент останется таковым, поскольку доступ к объекту Find осуществляется через объект Range, возвращаемый свойством Content.

With ActiveDocument. Content. Find
.ClearFormatting
.Font. Bold = True
With .Replacement
.ClearFormatting
.Font. Bold = False
End With
.Execute FindText := "", ReplaceWith := "", Format = True, Replace = wdReplaceAll
End With

Применение автоматизации


Вам может понадобиться, чтобы Ваше приложение не только работало с данными Word, но и обменивалось ими с другими приложениями (например с Microsoft Excel, Microsoft PowerPoint или Microsoft Access). Для взаимодействия с другими приложениями можно воспользоваться Автоматизацией (ранее известной как OLE-автоматизация).

Работа с Word из других приложений

Автоматизация позволяет получать, редактировать и экспортировать данные ссылаясь на объекты, свойства и методы другого приложения. Объекты приложения, на которые можно ссылаться из других приложений, называются объектами Автоматизации (Automation objects). Чтобы Word был доступен из других приложений через Автоматизацию, нужно прежде всего создать ссылку на библиотеку типов Word. Для этого из меню Tools (Сервис) редактора Visual Basic выберите команду References (Ссылки), после чего установите флажок в строке Microsoft Word 8.0 Object Library.

Затем объявите объектную переменную, которая будет ссылаться на объект Application Word:

Dim appWD As Word.Application.8

Далее используйте функции Visual Basic CreateObject или GetObject, передавая им в качестве параметра программный OLE-идентификатор Word — Word. Application. 8 или Word. Document. 8, как показано в следующем примере. Если Вы хотите, чтобы на экране появилось окно Word, установите свойство Visible как True.

Dim appWD As Word. Application. 8

Set appWD = CreateObject("Word. Application. 8")
appWD. Visible = True

Функция CreateObject возвращает объект Application Word и присваивает его переменной appWD. Обращаясь через эту переменную к объектам, свойствам и методам объекта Application, Вы сможете контролировать работу Word. В следующем примере создается новый документ Word:

appWD. Documents. Add

Функция CreateObject начинает новый сеанс Word, который не прекращается даже при удалении объектной переменной, ссылающейся на объект Аррlication. И присвоение ей значения Nothing работу Word тоже не завершит. Поэтому Word следует закрывать методом Quit. В следующем примере для Microsoft Excel мы вставляем данные из ячеек А1:В10 на первом листе в новый документ Word, а затем упорядочиваем данные в таблице. Макрос проверяет, не был ли создан новый экземпляр Word вызовом функции CreateObject, и, если да, закрывает его методом Quit. (Если функция GetObject возвращает ошибку с кодом 429, вызывается функция CreateObject, и тем самым создается новый экземпляр Word.)

Dim appWD As Word. Application
Err.Number =0
On Error GoTo notloaded
Set appWD = Get0bject(, "Word. Application. 8")
notloaded:
If Err. Number = 429 Then
Set appWD = CreateObject("Word.Application. 8")
theError = Err. Number
End If
appWD. Visible = True

With appWD
Set myDoc = .Documents. Add
With .Selection
For Each с In Worksheets("Sheet1").Range("A1:B10")
.InsertAfter Text := c. Value
Count = Count + 1
If Count Mod 2 = 0 Then
.InsertAtter Text := vbCr
Else
.InsertAfter Text := vbTab
End If
Next с
.Range. ConvertToTable Separator := wdSeparateByTabs
.Tables(1). AutoFormat Format := wdTableFormatClassic1
End With
myDoc. SaveAs FileName := "C:\Temp.doc"
End With
If theError = 429 Then appWD.Quit
Set appWD = Nothing

Работа с другими приложениями из Word

Для обмена данными с другим приложением из Word через Автоматизацию, надо прежде всего установить ссылку на библиотеку типов этого приложения в диалоговом окне References (Ссылки). После этого объекты, свойства и методы другого приложения появятся в окне Object Browser (Просмотр объектов), и Visual Basic сможет автоматически проверять синтаксис инструкций при компиляции. Кроме того, Вы сможете получать контекстно-зависимую справку по этим объектам, свойствам и методам.

Установив ссылку на библиотеку типов, объявите объектные переменные, ссылающиеся на объекты другого приложения. В следующем примере мы объявляем такую переменную, указывающую на объект Application Microsoft Excel:

Dim xlObj As Excel. Application. 8

Вызвав функцию CreateObject или GetObject, Вы получите ссылку на объект Автоматизации. После этого, используя объекты, свойства и методы другого приложения, Вы сможете добавлять, изменять или удалять соответствующую информацию. Закончив свои операции, закройте приложение. В следующем примере для Word проверяется, запущен ли в данный момент Microsoft Excel. Если да, программа использует функцию GetObject, нет — функцию CreateObject. Далее программа передает выделенный текст в первую ячейку на первом листе активной рабочей книги Microsoft Excel. Завершая свою работу, программа очищает объектную переменную, записывая в нее ключевое слово Nothing оператором Set.

Dim xlObj As Excel. Application. 8
If Tasks. Exists("Microsoft Excel") = True Then
Set xlObj = GetObject("Excel. Application. 8")
Else
Set xlObj = CreateObject("Excel. Application. 8")
End If
xlObj. Visible = True
If xlObj. Workbooks. Count = 0 Then xlObj. Workbooks. Add
xlObj.Worksheets("Sheet1"). Range("A1"). Value = Selection. Text
Set xlObj = Nothing

В следующем примере для Word проверяется, запущен ли в данный момент PowerPoint. Если да, программа использует функцию GetObject, нет —функцию CreateObject. После этого программа создает новую презентацию, первое текстовое поле которой содержит имя активного документа Word, а второе — текст первого абзаца активного документа. Завершая свою работу программа очищает объектную переменную, записывая в нее ключевое слово Nothing оператором Set.

Dim pptObj As PowerPoint. Application. 8
If Tasks. Exists( "Microsoft PowerPoint") = True Then
Set pptObj = GetObject(, "PowerPoint.Application.8")
Else
Set pptObj = CreateObject("PowerPoint.Application. 8")
End If
pptObj. Visible = True
Set pptPres = pptObj. Presentations. Add
Set aSlide = pptPres. Slides.Add(lndex:=1, Layout := ppLayoutText)
aSlide. Shapes(1).TextFrame. TextRange.Text = ActiveDocument.Name
aSlide. Shapes(2).TextFrarne. TextRange. Text = _
ActiveDocument. Paragraphs(1). Range. Text
Set pptObj = Nothing

* Прим. перев.: эта информация ошибочна. Свойство Type сообщает, что именно выделено в документе: блок (wdSelectionBlock), колонка (wdSelectionColumn), кадр (wdSelectionFrame) или вообще ничего не выделено (wdNoSclection). Кроме того, свойство Type предназначено только для чтения, и поэтому что-то изменить с его помощью нельзя.




Добавить в свой блог или на сайт

Похожие:

Лекция Объекты Microsoft Word iconРешение кафедры
Создание текстовых документов. Общие сведения о текстовом процессоре Microsoft Word. Приемы работы с текстами в процессоре Microsoft...

Лекция Объекты Microsoft Word iconУпражнения для самостоятельной работы 23 Контрольные вопросы 28
К текстовым редакторам можно отнести Microsoft Word, Lotus Word Pro, Corel Word Perfect, Star Office и другие. В данном пособии засматриваться...

Лекция Объекты Microsoft Word icon«Алюминий»
Систем мультимедиа, Маргту); “Репетитор по химии” (1С); “Программные средства: используемые учителем для подготовки материалов к...

Лекция Объекты Microsoft Word iconСценарий проекта
Используемые медиаресурсы: Microsoft Office word, Microsoft Office Power Point, Интернет- ресурсы

Лекция Объекты Microsoft Word iconВ. С. Мастяница Утверждено на совете факультета 21 декабря 2000 г
Хорошо известен среди пользователей, самый популярный пакет офисных приложений фирмы Microsoft, который называется Microsoft Office....

Лекция Объекты Microsoft Word iconМетодические указания к самостоятельной работе студентов по курсу «Информационная безопасность»
Контрольная работа предназначена для практического освоения средств парольной защиты, встроенных в популярный текстовый редактор...

Лекция Объекты Microsoft Word iconПравила представления статей для публикации в сборниках научных тудов казанского государственного архитектурно-строительного университета
Статья должна быть набрана в программе Microsoft Word (версия не ранее ms word 97). Файл, названный именем автора статьи, представить...

Лекция Объекты Microsoft Word iconОдной из итальянских республик «Флоренция» переводится как
Составьте небольшой рассказ о своей школе и о себе. Будет здорово, если вы красочно оформите свой ответ и дополните фотографиями....

Лекция Объекты Microsoft Word iconПравила для авторов просим ознакомиться с правилами подготовки рукописей перед сдачей их в издательство общие
Авторский текстовый оригинал должен быть представлен в формате Microsoft Word. Если в тексте присутствуют математические формулы,...

Лекция Объекты Microsoft Word iconРегиональным центрам России и др. С 1998 года информация рассылается в том числе на дискетах в формате Microsoft Word 7 для Windows 95
Сводные данные (план) международных научно-технических мероприятий издаются в виде брошюр с 1986г и рассылаются по министерствам,...


Разместите кнопку на своём сайте:
lib.convdocs.org


База данных защищена авторским правом ©lib.convdocs.org 2012
обратиться к администрации
lib.convdocs.org
Главная страница