Что такое paragraphs word

Всем привет, с вами автор блога scriptcoding.ru. В этой статье мы рассмотрим коллекцию Paragraphs и объект Paragraph – оба элемента позволяют задать основные параметры абзаца в Word документе.

Стоит обратить внимание, что большая часть свойств и методов являются идентичными. Так, если мы используем некоторое свойство, работая с коллекцией, то оно будет влиять на все основные параметры абзаца в Word, если свойство или метод используются только для конкретного объекта Paragraph, то обрабатываться будет параметр конкретного абзаца. В самой статье я приведу примеры программного кода для сценариев сервера Windows Script Host – VBScript и JScript.

И так, давайте приступим…

Содержание

  1. Paragraph и Paragraphs – основные параметры абзаца в Word
  2. Общие свойства – параметры форматирования абзацев
  3. Общие методы – настройка параметров абзаца
  4. Свойство и методы коллекции Paragraps – основные параметры абзаца
  5. Методы объекта Paragraph – параметры форматирования абзацев

Paragraph и Paragraphs – основные параметры абзаца в Word

Как и большинство коллекций и объектов модели Word, коллекция Paragraphs содержит все объекты Paragraph. Прежде чем приступать к обработке абзацев, нужно сначала получить ссылку на коллекцию Paragraphs, это можно сделать с помощью одноименно свойства классаSelection (смотрите статью «Объект Word Selection — выделить весь текст в ворде, свойства«) или класса Range (статья «Объект Word Range — Выбор текста«). Также стоит учитывать, что коллекция будет содержать те параграфы, которые входят в выделенный или выбранный диапазон текста.

Общие свойства – параметры форматирования абзацев

основные настройки параметров абзацев

Alignment— Позволяет задать или получить значение константы WdParagraphAlignment, которая отвечает за выравнивание текста:

  • wdAlignParagraphLeft — 0 – По левому краю.
  • wdAlignParagraphCenter — 1 – По центру.
  • wdAlignParagraphRight — 2 — По правому краю.
  • wdAlignParagraphJustify — 3 – По ширине.
  • wdAlignParagraphDistribute — 4 – Распределяет символы так, что бы заполнить по ширине все окно.
  • wdAlignParagraphJustifyMed — 5 — По ширине со средней степенью сжатия символов.
  • wdAlignParagraphJustifyHi — 7 — По ширине с высокой степенью сжатия символов.
  • wdAlignParagraphJustifyLow — 8 — По ширине с низкой степенью сжатия символов.

CharacterUnitFirstLineIndent– Задает или возвращает отступ первой строки.

CharacterUnitLeftIndent– Выступ слева

CharacterUnitRightIndent– Отступ справа

FirstLineIndent— Возвращает или устанавливает значение (в пунктах) для первой линии или отступа.

LeftIndent– Отступ слева в пунктах.

RightIndent– Отступ справа в пунктах.

LineSpacing– Междустрочный интервал.

LineSpacingRule— Возвращает или устанавливает междустрочный интервал, который определяет значение константы WdLineSpacing:

  • wdLineSpaceSingle — 0 – одинарный, по умолчанию
  • wdLineSpace1pt5 — 1 – 1,5 строки.
  • wdLineSpaceDouble — 2 – двойной.
  • wdLineSpaceAtLeast — 3 – минимум.
  • wdLineSpaceExactly — 4 – точно.
  • wdLineSpaceMultiple — 5 — междустрочный интервал определяется количеством линий указано.

LineUnitAfter– Интервал после параграфа.

LineUnitBefore– Интервал перед параграфом.

ReadingOrder— Возвращает или устанавливает такие основные параметры форматирования для абзаца, как порядок чтения без изменения их выравнивания. Содержит значение константы WdReadingOrder:

  • wdReadingOrderLtr — 1 – Слева направо
  • wdReadingOrderRtl — 0 – Справа налево

SpaceAfter– Интервал в пунктах после параграфа.

SpaceBefore— Интервал в пунктах перед параграфом.

Style— Возвращает или задает такие настройки параметров абзаца, как стиль. Свойство принимает имя стиля, или значение константы WdBuiltinStyle.

Общие методы – настройка параметров абзаца

задаем параметры абзацев в документе word

Indent() – Позволяет добавить отступ на один пункт.

Outdent() — Позволяет удалить отступ на один пункт.

IndentCharWidth(count) – Добавляет отступ на заданное количество символов.

IndentFirstLineCharWidth(count) — Отступ первой строки на заданное количество символов.

Reset() — Удаляет ручное форматирование – не влияет на форматирование стиля.

TabHangingIndent(count) — Устанавливает висячий отступ на заданное значение.

TabIndent(count) — Устанавливает отступ слева на заданное значение.

OpenOrCloseUp() – Вставляет или удаляет интервал в 12 пунктов перед указанным абзацем.

OpenUP() – Вставляет интервал в 12 пунктов перед указанным параграфом.

CloseUP() – Удаляет интервал в 12 пунктов перед указанным параграфом.

OutlineDemote() и OutlinePromote() – Применяют стиль Заголовок к указанному параграфу.

OutlineDemoteToBody() – Применяет нормальный стиль.

Space1() — Одинарный междустрочный интервал.

Space15() – Междустрочный интервал в 1.5 строки.

Space2() – Двойной междустрочный интервал.

Свойство и методы коллекции Paragraps – основные параметры абзаца

параметры форматирования в Word абзаца

Count– Содержит количество параграфов в документе. Только чтение.

Item(count) – Позволяет получить доступ к указанному абзацу в коллекции, вернет объект Paragraph.

Add() — Возвращает объект Paragraph, который представляет параметры форматирования нового абзаца, который является пустым, добавленным в документ.

DecreaseSpacing() — Уменьшает отступ между параграфами на 6 пунктов.

IncreaseSpacing() — Увеличивает отступ между параграфами на 6 пунктов.

Методы объекта Paragraph – параметры форматирования абзацев

настройка в Word параметра абзацов

Next(count) — Возвращает объект Paragraph, представляющий основные параметры следующего абзаца в Word.

Previous(count) — Возвращает объект Paragraph, представляющий основные параметры предыдущего абзаца в Word.

И так, с теоретической частью мы закончили, теперь можно приступить к программированию. Рассмотрим два простых примера на языке VBScript и JScript, я сначала приведу программный код, а уже в конце дам пояснения.

Пример на языке программирования VBScript:

' ----------------------------------------------------------------------------
' Коллекция Paragraph и класс Paragraph
' Выравнивание и изменение междустрочного интервала
' Основные параметры абзацев в Word
' Paragraph.vbs
' ----------------------------------------------------------------------------
Option Explicit
 
dim oWord, oDoc, oSel, i, oPars, MyText, j
 
Set oWord = CreateObject("Word.Application")
Set oDoc = oWord.Documents
oDoc.Add()
Set oSel = oWord.Selection
Set oPars = oSel.Paragraphs
oWord.Visible = True
 
MyText = "параметры форматирования абзаца. "
 
For i=0 to 10
   oSel.TypeText MyText & MyText & MyText & MyText & MyText & MyText & MyText
   oSel.TypeParagraph
Next
 
oDoc(1).Select
i=1:j=0
' настройка параметров каждого абзаца
Do While i <= oPars.Count
   if j = 2 then     oPars(i).LineSpacing = 3
   if j = 3 then
      j = 0
      ' Меняем выравнивание абзаца
      oPars(i).Alignment=j
      j = j + 1
   else
      oPars(i).Alignment=j
      j = j + 1
   end if
   i = i + 1
Loop

Пример на языке программирования JScript:

// ----------------------------------------------------------------------------
// Коллекция Paragraph и класс Paragraph
// Выравнивание и изменение междустрочного интервала
// Основные параметры абзацев в Word
// Paragraph.js
// ----------------------------------------------------------------------------
 
var oWord1, oDoc1, oSel1, oPars1, MyText1 = "параметры форматирования абзаца. ", oRange1;
 
oWord1 = WScript.CreateObject("Word.Application");
oDoc1 = oWord1.Documents;
oDoc1.Add();
oSel1 = oWord1.Selection;
oWord1.Visible = true;
 
// Вставляем текст
for (i=0; i<=10; i++){
   oSel1.TypeText(MyText1 + MyText1 + MyText1 + MyText1 + MyText1 + MyText1 + MyText1);
   oSel1.TypeParagraph();
}
 
// Создаем ссылку для Range Word
// Заодно выбираем весь текст
oRange1 = oDoc1(1).Range();
oPars1 = oRange1.Paragraphs;
 
var i = 1, j = 0;
// настройка параметров каждого абзаца
while (i <= oPars1.Count){
   if (j == 2){ oPars1(i).LineSpacing = 3;}
   if (j == 3){
      j = 0;
      // Меняем выравнивание
      oPars1(i).Alignment=j;
      j ++
   }else{
      oPars1(i).Alignment=j;
      j ++
   }
   i ++
}

Хорошо, теорию разобрали, программированием занялись, теперь надо дать пояснения к сценариям:

Объявление переменных – в самом начале мы объявляем переменные, в языке vbscript это делается в блоке dim, а в языке программирования jscript – в блокеvar. Обратите внимание, что в vbs мы включили проверку переменных с помощью оператора Option Explicit. Сами имена переменных отличаются, так, для JS скрипта я приписал единицу.

Подключение внешних классов – Далее происходит процесс создания ссылок на внешние классы, которые позволяют создать новый документ, задавать параметры форматирования абзацев, управлять вставкой текста и так далее. Обратите внимание, что для vbs мы использовали ключевое слово set.

Вставка содержимого – В цикле for (смотрите синтаксис для vbscript — «Урок 6 по VBScript: Циклы for…next и for each…next» и jscript — «Урок 9 по JScript — оператор цикла for«) происходит вставка несколько раз содержимого переменной MyText параллельно с параграфом.

Настройка параметров абзаца – Тут снова используется цикл for, в котором в заданном порядке происходит форматирование – меняется интервал, выравнивание и так далее. Обратите внимание, что в vbs сценарии мы получили доступ к параграфам через Selection, а в js – через Range.

  1. Коллекция
    Paragrahs.
  2. Интервалы.
  3. Отступы
    и выступы.
  4. Создание
    структуры документа.
  5. Горизонтальное
    выравнивание.
  6. Буквица.
  7. Формат
    абзацев.
  8. Границы.

1.Коллекция Paragraphs.

Любой документ Word состоит из
набора абзацев, которые образуют структуру документа. Признаком конца абзаца
является непечатаемый символ абзаца, который по умолчанию невидим.

Для его отображения в окне диалога Параметры, которое
отображается выбором команды Сервис необходимо установить флажок Знаки
абзацев
. Это также можно выполнить, используя следующий код:

ActiveWindow.View.ShowParagraphs
= True

ActiveWindow – это объект типа Window, связанный с текущим активным окном редактирования Word. Чтобы скрыть знаки абзацев, свойству ShowParagraphs необходимо присвоить значение False.

Для автоматизации работы с абзацами следует использовать
коллекцию Paragraphs, которая содержит все абзацы
конкретного документа. Доступ к нужному абзацу осуществляется с помощью объекта
Paragraph, являющегося конкретным абзацем документа.

Для получения ссылки на коллекцию можно использовать
следующий синтаксис.

Dim objParagraphs as Paragraphs

Set objParagraphs = Documents(Item).Paragraphs

Здесь Item – индекс, указывающий
на определенный документ из семейства открытых документов Documents.

Для перебора всех абзацев документа можно использовать цикл For EachNext

В примере показан код, позволяющий выровнять все
абзацы по центру.

Dim b As Paragraph

For Each b In ActiveDocument.Paragraphs

b.Alignment = wdAlignParagraphJustify

Next

Для получения ссылки к отдельному абзацу можно получить с
помощью метода Item, являющегося
методом по умолчанию.

Синтаксис:

Dim objParagraph as Paragraph

Set objParagraph = Doocuments
(Item).Paragraphs.[Item](Index)

Itemиндекс
указывающий на определенный документ из семейства открытых документов Documents.

Index – указывает на порядковый
номер абзаца в семействе Paragraphs. Первый абзац
документа имеет индекс 1, а индекс последнего можно узнать с помощью свойства Count объекта Paragraphs.

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

MsgBox
«индекс последнего абзаца:» & ActiveDocument.Paragraphs.Count

Для перемещения по абзацам документа можно использовать методы
Next и Previews.

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

Синтаксис:

objParagraph.Next

или

objParagraph.Preview

Для форматирования абзацев также можно использовать объект ParagraphFormat. Этот объект обладает такими же свойствами
и методами, связанными с форматированием отдельного абзаца, как и объект Paragraph. Для объявления объекта типа ParagraphFormat
можно использовать следующий синтаксис:

Dim objParformat
as ParagraphFormat

Set objParFormat = Document(Item).Paragraph(Index).Format

Для создания нового абзаца используется метод Add объекта Paragraphs.

Синтаксис:

ObjParagraph.Add[(range)]

Параметр Range позволяет указать
область, перед которой будет добавлен новый абзац. Если параметр опущен, то
абзац добавляется в конец документа.

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

Dim g As Paragraph

Set g = ActiveDocument.Paragraphs.Add(Selection.Range)

2.Интервалы.

Абзацные.

Интервалы между абзацами позволяют создавать визуальное
разделение между значимыми абзацами, например между заголовками и основным
текстом.

Для задания интервалов между абзацами можно использовать три
метода и два свойства.

Метод OpenUp позволяет
вставить перед данным параграфом интервал, равный 12 пунктам. Использование
этого метода эквивалентно присвоению соответствующего значения свойству SpaceBefore.

ObjParagraph.SpaceBefore[=space]

Параметр Space (тип Long) содержит целое неотрицательное число, указывающее на
величину интервала перед данным абзацем.

Свойство SpaceAfterсодержит
целое неотрицательное число, указывающее на величину интервала после данного
абзаца.

Метод CloseUpпозволяет
удалить интервалы перед данным абзацем. Использование этого метода эквивалентно
присвоению свойству SpaceBefore значение 0.

Метод OpenOrCloseUp позволяет
управлять установлением и удалением абзацных интервалов. Если абзац не имеет
интервала (свойство SpaceBefore имеет значение 0), то
этот метод позволяет установить его подобно методу OpenUp.
Если интервал уже существует, то метод удаляет его подобно методу CloseUp.

Методы DecreaseSpacing  и  IncreaseSpacing позволяют соответственно уменьшить или
увеличить величину абзацного интервала на 6 пунктов одновременно перед абзацем
и после него.

Межстрочные.

Межстрочные интервалы позволяют задать величину расстояния
между строк в пунктах. По умолчанию для текста, отформатированного стилем Обычный, величина межстрочного интервала равна 12 пунктам.

Межстрочные интервалы изменяются с помощью методов
Space1, Space15 и
Space2. Применение этих методов позволяет увеличить
стандартный межстрочный размер в один, полтора и два раза соответственно.

Свойство LineSpacingсодержит
текущую величину межстрочного значения.

ObjParagraph.LineSpacing[=Space]

Параметр Space позволяет
указать необходимую величину межстрокового интервала.

Пример: показан код, позволяющий проверить величину межстрокового интервала у всех в документе и, если такие имеются, присвоить им значение по умолчанию (12 пунктов)

Dim G As Paragraph

For Each G In ActiveDocument.Paragraphs

With G

If .LineSpacing > Application.LinesToPoints(1) Then

.Space1

End If

End With

Next

Метод LinesToPoints объекта
Application позволяет преобразовать линии в пункты.

Application.LinesToPoints(Lines)

Параметр Lines позволяет
задать число линий, значение которых нужно преобразовать в пункты. Например,
если параметр Lines имеет значение 2, то метод
возвращает число 24.

Свойство LineSpacingRule  позволяет установить значение межстрокового интервала в абзаце.

wdLineSpaceAtLeast – минимальный
размер

wWdLineSpaceExactly – точный
размер

 wdLineSpaceMultiple
— множитель

3.Отступы и выступы.

Отступы и выступы позволяют выполнить в документе выделения
определенных абзацев текста. Они создаются с помощью дополнительных полей
страницы.

Метод Indent – позволяет
сместить все строки абзаца вправо на величину равную одной табуляции.
Использование этого метода аналогично смещению вправо указателя отступа,
находящегося на верхней линейке в окне редактирования.

Метод IndentCharWidth позволяет
сместить все строки абзаца вправо на указанное число символов.

ObjParagraph.IndentCharWidth (Count)

Метод IndentFirstLineCharWidth позволяет
сместить вправо только первую строку абзаца, т.е. создать «красную строку».

Свойство FirstLineIndent содержит
число пунктов, на которые первая строка абзаца смещена вправо или влево. Если
«красной строки» нет, то свойство возвращает нуль. Если строка имеет отступ, то
возвращается значение большее нуля, если выступ – меньше нуля.

objParagraph.FirstLineIndent[=count]

При присвоении свойству некоторой величины в пунктах можно
использовать метод LinesToPoints объекта Application, который позволяет преобразовать размер
стандартной ширины линии в пункты: одна линия = 12 пунктам.

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

With ActiveDocument.Paragraphs(1)

.Indent

.FirstLineIndent = LinesToPoints(1)

End With

Метод TabHangingIndent позволяет
выполнить отступ и выступ первой строки абзаца на значение, кратное величине
табуляции.

ObjParagraph.TabHangingIndent(count)

Параметр Count (тип Integer) содержит число, характеризующее количество
символов табуляции, на которое должна быть смещена первая строка абзаца -–при смещении вправо значение должно быть положительным, а
влево – отрицательно.

Метод Outdent позволяет
сместить все строки абзаца влево на величину, равную одной табуляции.

Свойство LeftIndent содержит
значение в пунктах, на которые смещен абзац слева.

Свойство RightIndent содержит
значение в пунктах, на которые смещен абзац справа.

Метод TabIndent позволяет
выполнить отступ или выступ левой границы абзаца на значение, кратное величине
табуляции.

4.Создание структуры документа.

Режим структуры документа – это особый режим, в котором
документ может быть представлен на необходимом уровне детализации: от
заголовков первого уровня до абзацев. Режим структуры предназначен для работы с
большими документами, имеющими множество заголовков разных уровней.

В режиме структуры базовым элементом для работы является
абзац. Это не исключает возможность редактирования текста, однако, все
инструменты, определенные для этого режима, действуют только на абзацы или
структуры образованные абзацами.

Как правило, при работе с текстом документа управляющие его
структурой, применяются ко всем абзацам, а свойства – к конкретным абзацам.

Метод OutLinePromote позволяет
повысить уровень текущего абзаца.(если абзац
отформатирован стилем Заголовок2, то применение этого метода автоматически
назначит ему стиль Заголовок1.)максимальный уровень – первый.

Метод OutLineDemote позволяет
понизить уровень текущего абзаца. Минимальный уровень – девятый.

Метод OutLineDemoteToBody позволяет
понизить абзац, являющийся заголовком любого уровня, до обычного текста.

Пример: показан код позволяющий преобразовать все абзацы,
отформатированные стилем заголовок9 в обычный текст

Dim t As Paragraph

For Each t In ActiveDocument.Paragraphs

If t.OutlineLevel = wdOutlineLevel9 Then

t.OutlineDemoteToBody

End If

Next

Свойство OutLineLevel содержит
значение, указывающее на текущий уровень абзаца.

5.Горизонтальное выравнивание.

Для горизонтального выравнивания текста в документе можно
использовать выравнивание строк абзаца по левому или правому краю, по ширине или
по центру. По умолчанию Word выравнивает весь текст
по левому полю документа.

Свойство Aligment позволяет
выполнить горизонтальное выравнивание.

ObjParagraph.Aligment [=Aligment]

Параметр Aligment позволяет
установить порядок выравнивания:

wdAlignParagraphLeft – по левому
краю

 wdAlignParagraphCenter
– по центру

 wdAlignParagraphRight
– по правому краю

 wdAlignParagraphJustify
– по ширине

6.Буквица.

Буквица – это большая заглавная буква первого слова в
абзаце.

В VBA создание буквиц в документе реализуется с помощью свойства
DropCap
объекта Paragraph.

Пример: создать буквицу для первого абзаца активного
документа.

With ActiveDocument.Paragraphs(1).DropCap

.Position =
wdDropNormal

.LinesToDrop = 3

End
With

7.Формат абзацев.

Форматирование абзаца документа выполняется с помощью
объекта ParagraphFormat, ссылку на который можно
получить с помощью свойства Format объекта Paragarph. (смотрите выше)

Ссылку на объект типа ParagraphFormat
можно сделать также с помощью свойства Paragraphformat
объекта Selection.

Selection.ParagraphFormat

Этот способ более предпочтителен, так в этом случае ссылка
не будет привязана к конкретному абзацу. Объект ParagarphFormat
будет связан с абзацем, выделенным в текущий момент, или с тем, в котором
находится курсор.

Объявлять переменную и типа ParagarphFormat
имеет смысл только при использовании сложного форматирования. Для внесения
небольших изменений  удобнее использовать
свойство Format.

Пример: горизонтальное выравнивание всех абзацев документа
по центру.

ActiveDocument.Paragraphs.Format.Alignment = wdAlignParagraphCenter

8.Границы.

В VBA для доступа к любым границам используется объект Borders, являющийся семейством объектов Border,
каждый из которых связан с границей.

Для получения ссылки на семейство Borders
можно использовать свойство Borders.

ObjParagraph.Borders[(Border)]

Параметр Boredr позволяет
указать на конкретную границу.

Пример: назначаем нижней границе первого абзаца стиль
двойной линии.

 ActiveDocument.Paragraphs(1).Borders(wdBorderBottom).LineStyle = wdLineStyleDouble

Формат границы устанавливается с помощью свойств linestyle и LineWidth. Свойство lifestyle – позволяет установить стиль линии границы, а
свойство LineWidth ее ширину.

objBorder.LineStyle[=LineStyle]

objBorder.LineWidth[=LineWidth]

Цвет линии определяется с помощью свойства Color.

objBorder.ColorIndex [=Color]

Dim s As Border

Set s = ActiveDocument.Paragraphs(1).Borders(wdBorderLeft)

With s

 . LineStyle = wdLineStyleDot

. ColorIndex = wdBlue

. LineWidth = wdLineWidth025pt

End With

9.Объект
Document.

Объект Document представляет собой
конкретный документ, открытый в MS Word. Доступ к
нему можно получить с помощью коллекции Documents.

По умолчанию любой только что открытый документ является
активным. Однако при работе с несколько открытыми документами требуется механизм активизации нужного документа для этого
используется
метод Activate.

Синтаксис:

ObjDocument.Activate

Метод возвращает ссылку на объект типа Document.

Пример:

Set objDocument1=Documents.Add
‘создание и активизация документа Doc1

Set objDocument2=Documents.Add
‘создание и активизация документа Doc2

objDocument1.Activate ‘активизация документа Doc1

Для обращения к активному документу можно использовать
глобальное свойство ActiveDocument, которое
возвращает ссылку на объект типа Document. При таком
обращении можно избежать идентификации конкретного документа, обращаясь к
активному в данный момент времени документу напрямую.

 Кроме объекта
связанного с активным документом, в VBA имеется объект, связанный с текущим
документом. Объект ThisDocumentсе всегда указывает на
тот документ , в проектк
которого он объявлен. Свойства и методы объекта ThisDocument
соответствуют свойствам и событиям объекта Document

Этот объект является глобальным и его дополнительное
объявление не требуется. Свойства.

GrammarCheckedопределяет была ли запущена проверку грамматики для
заданного документа(true) или нет (false). В случае необходимости повторного запуска
грамматики этому свойству следует задать значение false.

GrammaticalErrors – возвращает
коллекцию ProfreadingErrors, которая включает
предложения, содержащие грамматические ошибки диапазона или всего документа. В
том случае, если грамматические ошибки отсутствуют, свойство GrammaticalErrors возвращает значение 0.

Name – определяет имя файла на
диске, в котором хранится документ. С помощью этого свойства можно получить имя
файла, но нельзя изменить его.

Paragraphs – возвращает коллекцию Paragraphs, которая содержит все абзацы в заданном
документе, диапазоне или выделении.

ReadOnly – это свойство имеет
значение true, если внесенные в документ изменения не
могут быть сохранены в нем.

Saved – если файл не сохранен, то
данное свойство имеет значение true; еслм нет – False.

ShowSpellingErrorstrue _позволяет установить режим
подчеркивания слов, содержащих орфографические ошибки.

ShowGrammaticalErrors – позволяет
задать режим подчеркивания грамматических ошибок во время ввода текста в
документ(true).

Styles – возвращает коллекцию Styles, которая содержит все стили данного документа. Tables
возвращает коллекцию Tables, которая содержит все
таблицы данного документа, диапазона или выделения.

TablesOfContents — возвращает
коллекцию TablesOfContents, которая содержит все
оглавления данного документа.

Type – возвращает тип документа:

wdTypeDocument – обычный документ,

wdTypeTemplate – шаблон.

Windows — возвращает коллекцию Windows, которая содержит все окна данного документа.

Tables — возвращает коллекцию Tables, которая содержит все таблицы данного документа,
диапазона или выделения.

TablesOfContents — возвращает
коллекцию TablesOfContents, которая содержит все
оглавления данного документа.

Type – возвращает тип документа:

wdTypeDocument – обычный документ,

wdTypeTemplate – шаблон.

Windows — возвращает коллекцию Windows, которая содержит все окна данного документа.

Методы.

CheckGrammarпредназначен для проверки орфографии и грамматики в заданном
документе или диапазоне. Если в результате проверки были найдены ошибки, то
будет автоматически загружено окно диалога Правописание. Заметим, что проверка
правописания может выполнятся для выделенного
текстового фрагмента или отдельного строкового выражения. В первом случае в
качестве родительского объекта используется объект Selection.

Selection.CheckGrammar

Чтобы проверить правописание в стоковом выражении,
необходимо использовать метод CheckGrammar объекта Application. Проверяемое выражение передается в метод с
помощью параметра String

Синтаксис: Application.CheckGrammar(String)

Признак выполнения проверки содержится в свойстве GrammarChecked.

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

Sub ошибки()

With ActiveDocument.GrammaticalErrors

For i = 1 To .Count

s = s
& .Item(i) & vbCrLf(Комбинация символов возврата каретки и перевода
строки)

Next

End With

MsgBox s

End Sub

CheckSpelling
начинает проверку орфографии для заданного документа или диапазона.

PrintPreview – переключает
MS Word в режим предварительного просмотра документа.

Range – возвращает объект Range, задаваемый начальной и конечной позициями символов
фрагмента текста.

Синтаксис:

ObjDocument.Range(Start, End)

Start – определяет
позицию первого символа диапазона. Нулевое значение данного свойства
соответствует началу документа.

End – определяет  позицию последнего символа диапазона.

Redo – повторяет последнее
из отмененных до этого действий или целую последовательность отмененных
действий. Данный метод возвращает значение true, если
действие было повторено.

Синтаксис:

ObjDocument.Redo(Times)

Times – определяет количество
повторяемых действий.

Пример: ActiveDocument.Redo 2

Save – в отличии от одноименного метода коллекции Documents,
не имеет параметров. Данный метод аналогичен выполнению команды Файл®Сохранить.

SaveAs – позволяет
выполнить действия, аналогичные действиям, выполняемым командой Файл®Сохранить
Как. Параметры этого метода совпадают с параметрами, установленными в окне
диалога Сохранение документа.

objDocument.SaveAs(FileName, FileFormat,
LockComments, Password, AddToRecentFiles,
WritePassword, ReadOnlyRecommended,
EmbedTrueTypeFonts, SaveNativePictureFormat,
SaveFormsData, SaveAsAOCELetter)

Параметр FileName
содержит имя сохраняемого файла.

FileFormat – содержит формат в котором будет выполнено сохранение.

LockComments – содержит
указание на возможность добавления коментариев.

Password – пароль на открытие документа.

AddToRecentFiles – указывает на возможность добавления сохраняемого файла в список
недавно открытых в меню Файл.

WritePassword – пароль на
запись в документе.

ReadOnlyRecommended
указывает на создание обязательного предупреждения об открытии только для
чтения.

EmbedTrueTypeFonts
указывает на сохранение шрифтов вместе с документом.

SaveNativePictureFormat
указывает на сохранение внедренной графики в формате
Windows.

SaveFormsData – указывает
на сохранение данных, внесенных пользователем в форму.

SaveAsAOCELetter – если
сохраненный документ имеет присоединенную почтовую программу, то при задании
этому параметру значения true
документ будет сохранен как письмо.

 Undo – отменяет последнее
выполненное действие или последовательность действий.

Синтаксис: objDocument.Undo(times).

UpdateStyle – копирует все стили из
присоединенного шаблона в документ.
При этом выполняется автоматическая
замена всех уже имеющихся стилей с именами, совпадающими с именами стилей из шаблона.

Режим отображения документа. 

Для управлениями
отображения документа используется объект View, являющийся объектом-свойством объекта Window.

Синтаксис:

ObjWindow.View.Type[ = ViewType]

wdOutlineView – режим
структуры.

wdPrintView – режим
разметки.

wdNormalView – обычный
режим.

wdPruntPreview – режим
предварительного просмотра.

wdWebView – режим Web – документа.

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

With ActiveWindow.View

If .Type = wdPrintPreview Then

.Type = wdNormalView

Else

MsgBox
«
режим отображения:» & .Type

End If

End WithРежим
отображения документа. 

Для управлениями
отображения документа используется объект View, являющийся объектом-свойством объекта Window.

Синтаксис:

ObjWindow.View.Type[ = ViewType]

wdOutlineView – режим
структуры.

wdPrintView – режим
разметки.

wdNormalView – обычный
режим.

wdPruntPreview – режим
предварительного просмотра.

wdWebView – режим Web – документа.

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

With ActiveWindow.View

If .Type = wdPrintPreview Then

.Type = wdNormalView

Else

MsgBox
«
режим отображения:» & .Type

End If

End With

  1. Коллекция
    Paragrahs.
  2. Интервалы.
  3. Отступы
    и выступы.
  4. Создание
    структуры документа.
  5. Горизонтальное
    выравнивание.
  6. Буквица.
  7. Формат
    абзацев.
  8. Границы.

1.Коллекция Paragraphs.

Любой документ Word состоит из
набора абзацев, которые образуют структуру документа. Признаком конца абзаца
является непечатаемый символ абзаца, который по умолчанию невидим.

Для его отображения в окне диалога Параметры, которое
отображается выбором команды Сервис необходимо установить флажок Знаки
абзацев
. Это также можно выполнить, используя следующий код:

ActiveWindow.View.ShowParagraphs
= True

ActiveWindow – это объект типа Window, связанный с текущим активным окном редактирования Word. Чтобы скрыть знаки абзацев, свойству ShowParagraphs необходимо присвоить значение False.

Для автоматизации работы с абзацами следует использовать
коллекцию Paragraphs, которая содержит все абзацы
конкретного документа. Доступ к нужному абзацу осуществляется с помощью объекта
Paragraph, являющегося конкретным абзацем документа.

Для получения ссылки на коллекцию можно использовать
следующий синтаксис.

Dim objParagraphs as Paragraphs

Set objParagraphs = Documents(Item).Paragraphs

Здесь Item – индекс, указывающий
на определенный документ из семейства открытых документов Documents.

Для перебора всех абзацев документа можно использовать цикл For EachNext

В примере показан код, позволяющий выровнять все
абзацы по центру.

Dim b As Paragraph

For Each b In ActiveDocument.Paragraphs

b.Alignment = wdAlignParagraphJustify

Next

Для получения ссылки к отдельному абзацу можно получить с
помощью метода Item, являющегося
методом по умолчанию.

Синтаксис:

Dim objParagraph as Paragraph

Set objParagraph = Doocuments
(Item).Paragraphs.[Item](Index)

Itemиндекс
указывающий на определенный документ из семейства открытых документов Documents.

Index – указывает на порядковый
номер абзаца в семействе Paragraphs. Первый абзац
документа имеет индекс 1, а индекс последнего можно узнать с помощью свойства Count объекта Paragraphs.

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

MsgBox
«индекс последнего абзаца:» & ActiveDocument.Paragraphs.Count

Для перемещения по абзацам документа можно использовать методы
Next и Previews.

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

Синтаксис:

objParagraph.Next

или

objParagraph.Preview

Для форматирования абзацев также можно использовать объект ParagraphFormat. Этот объект обладает такими же свойствами
и методами, связанными с форматированием отдельного абзаца, как и объект Paragraph. Для объявления объекта типа ParagraphFormat
можно использовать следующий синтаксис:

Dim objParformat
as ParagraphFormat

Set objParFormat = Document(Item).Paragraph(Index).Format

Для создания нового абзаца используется метод Add объекта Paragraphs.

Синтаксис:

ObjParagraph.Add[(range)]

Параметр Range позволяет указать
область, перед которой будет добавлен новый абзац. Если параметр опущен, то
абзац добавляется в конец документа.

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

Dim g As Paragraph

Set g = ActiveDocument.Paragraphs.Add(Selection.Range)

2.Интервалы.

Абзацные.

Интервалы между абзацами позволяют создавать визуальное
разделение между значимыми абзацами, например между заголовками и основным
текстом.

Для задания интервалов между абзацами можно использовать три
метода и два свойства.

Метод OpenUp позволяет
вставить перед данным параграфом интервал, равный 12 пунктам. Использование
этого метода эквивалентно присвоению соответствующего значения свойству SpaceBefore.

Коллекции Word: Documents, Paragraphs и другие

Word позволяет одновременно работать с одним или несколькими документами. Документы и коллекция документов — это центральные понятия Word. Классы Document и Documents играют для Word ту же роль, что и классы WorkBook и WorkBooks для Excel. Документ Word организован довольно сложно. Текст — основа большинства документов — может быть дополнен рисунками и таблицами, с ним могут быть связаны комментарии и исправления, сноски и колонтитулы и т. д. Но об этом речь впереди, а пока чуть подробнее поговорим о тексте. Конечно, текст можно рассматривать как последовательность символов, его составляющих. Но ведь куда как часто мы оперируем с более крупными единицами! Word использует привычные понятия: символы, слова, предложения, абзацы, разделы.

Существуют понятия — существуют и классы, соответствующие этим понятиям. Объект Application. Word, представляющий приложение Word, имеет свойство (встроенный объект) Documents. При обращении к свойству возвращается объект класса Documents — коллекция всех открытых документов. Элемент коллекции — документ — это объект класса Document.

Объект Document, представляющий один документ, имеет свойства:

Свойство Возвращает
Characters объект класса Characters, представляющий коллекцию символов текста документа
Words объект, представляющий коллекцию слов
Sentences объект, представляющий коллекцию предложений
Paragraphs объект, представляющий коллекцию абзацев
Sections объект, представляющий коллекцию разделов или секций документа
ListParagraphs объект, представляющий коллекцию списков, входящих в текст документа

Конечно, это лишь часть многочисленных свойств, связанных с текстом документа. Заметьте: данными свойствами обладает не только сам документ. Ими обладают и объекты Selection и Range, представляющие части документа. При этом возвращаемые объекты представляют соответствующие коллекции данной части документа.

Казалось бы, раз есть коллекции Characters или Words, то должны существовать и классы Character и Word, представляющие отдельный символ или отдельное слово. Но это не так. Элементами коллекций Characters, Sentences и Words являются объекты класса Range. Нет операций, отдельно определенных над символами, словами или предложениями, — они определены над интервалами, последовательностью символов, представляемых объектом Range. Ситуация здесь подобна Excel, где элементами коллекции Cells являются не ячейки, а все тот же объект Range.

Абзацу и разделу соответствуют свои классы объектов — Paragraph и Section соответственно. Но у нас сейчас разговор пойдет не о классах отдельных объектов, а о коллекциях. Мы начнем с коллекции документов.

Коллекция Documents

Коллекция Documents представляет все открытые документы Word. По своим свойствам и поведению она напоминает коллекцию WorkBooks, представляющую все открытые рабочие книги Excel. Поэтому мы будем часто ссылаться на уже описанные свойства и методы коллекции WorkBooks.

Документы, как и рабочие книги, могут существовать постоянно и храниться во внешней памяти — как файлы с обычным для документов Word расширением .doc. При открытии приложения Word автоматически открывается уже существующий или новый пустой документ. Так что в момент открытия приложения коллекция документов не пуста и содержит минимум один документ. Для добавления в коллекцию новых элементов используются методы:

  • Add — добавляет новые пустые документы;
  • Open — открывает файл, содержащий существующий документ и автоматически добавляет его в коллекцию.

Метод Add имеет синтаксис:

Add(Template,NewTemplate)

Параметр Template, задающий шаблон открытия документа, является строкой с именем файла, хранящего шаблон. Параметр не является обязательным и, если он опущен, используется стандартный шаблон Normal (файл Normal. dot). Второй параметр (тоже необязательный) — NewTemplate — булевого типа; он равен True, если документ открывается, как шаблон. Так что коллекция Documents содержит не только документы, но и шаблоны.

У метода Open десять параметров. Обязательным является только первый — FileName ; он задает имя файла, содержащего документ (шаблон). Остальные параметры определяют режимы открытия: пароль, статус файла, преобразование формата при открытии и т. п.

Документ удаляется из коллекции при его закрытии. Вне коллекции не может существовать открытый документ. Метод Close закрывает документ и одновременно удаляет его из коллекции. Его синтаксис:

Close(SaveChanges, OriginalFormat, RouteDocument)

Все параметры являются необязательными. Первый указывает действия, предпринимаемые при закрытии документа, и может быть одной из констант: wdSaveChanges, wdDoNotSaveChanges, wdPromptToSaveChanges. В зависимости от константы сделанные в документе изменения будут сохранены, проигнорированы или решение будет предоставлено пользователю в режиме диалога. По умолчанию изменения сохраняются при закрытии документа. Параметр OriginalFormat указывает формат сохранения документа и может быть одной из констант: wdWordDocument, wdOriginalFormat, wdPromptUser. В первом случае при сохранении используется формат документов Word, во втором — оригинальный формат документа — тот, что он имел при открытии; в последнем случае решение принимает пользователь в режиме диалога. По умолчанию предполагается формат документа Word. Третий параметр — булевого типа — равен True, если документ после закрытия направляется следующему пользователю, который принимает участие в работе над этим документом. Данный параметр имеет смысл лишь при коллективной работе над документом в сети. По умолчанию он равен False.

Метод Save позволяет сохранять документы (шаблоны) без закрытия и удаления из коллекции. Этот метод имеют как объекты класса Document, так и коллекции — объекты Documents. Если метод Save вызывает коллекция, то сохраняются все документы этой коллекции. При этом его синтаксис:

Save(NoPrompt, OriginalFormat)

Оба параметра необязательны. Если значение первого — True, Word автоматически сохраняет все документы, в противном случае возникнет диалог с пользователем о сохранении каждого из документов. Параметр OriginalFormat задает формат сохранения так же, как и в методе Close. У метода Save, используемого для сохранения отдельного документа, параметров нет. Если сохраняется новый документ, с которым еще не связано имя файла, его хранящего, будет вызвано диалоговое окно SaveAs, в котором пользователь задаст это имя и, если надо, путь.

Для получения доступа к элементу коллекции, как обычно, можно вызвать метод Item. Его единственный параметр Index задает порядковый номер или имя документа в коллекции. Item является методом по умолчанию, так что индекс можно непосредственно указывать у объекта, задающего коллекцию.

Класс Documents имеет типичные для коллекций свойства:

  • Application ;
  • Count ;
  • Creator ;
  • Parent.

Эти свойства мы описали, когда речь шла о коллекции WorkBooks. Закончим рассмотрение этой коллекции примером:

Public Sub WorkWithDocuments()
'Работа с коллекцией документов
Dim N As Long, I As Byte
Dim PathDir As String
PathDir = "e:O2000CD2000Ch1"
With Documents
    N = .Count
    Debug.Print "Число документов в коллекции Documents " & _
    "при открытии приложения Word = ", N
    ' Добавление 2-х новых документов (второй представляет шаблон)
    .Add
    .Add NewTemplate:=True
    'Добавление двух существующих документов
    .Open (PathDir & "DocThree")
    .Open (PathDir & "DocFive")
    N = .Count
    Debug.Print "Число документов после 4-х вызовов методов " _
        & "Add и Open =", N
    Debug.Print "Имена документов в коллекции:"
    For I = 1 To .Count
        Debug.Print .Item(I).Name
    Next
    'Закрытие двух документов и, следовательно, удаление их из коллекции
    .Item(2).Close
    .Item(3).Close
    N = .Count
    Debug.Print "Число документов после двух вызовов " _
        & "метода Close =", N
    Debug.Print "Имена документов, оставшихся в коллекции:"
    For I = 1 To .Count
        Debug.Print .Item(I).Name
    Next
End With
End Sub

1.5.

Приведем результаты отладочной печати (В данном примере испульзуюся документы Dex1, DocFive, DocThree:

Число документов в коллекции Documents при открытии приложения Word =  1               
Число документов после 4-х вызовов методов Add и Open =  5 
Имена документов в коллекции:
DocFive.doc
DocThree.doc
Template2
Document3
Dex1.dot
Число документов после двух вызовов метода Close =   3 
Имена документов, оставшихся в коллекции:
DocFive.doc
Template2
Dex1.dot

Обратите внимание на то, что элементы добавляются в начало коллекции, а не в ее конец, как это было при добавлении элементов в коллекцию WorkBooks Excel. При удалении элемента происходит перенумерация индексов, поэтому удаляется второй и четвертый элемент коллекции при последовательном выполнении методов Item(2). Close, Item(3).Close.

Коллекция Paragraphs

Свойство Paragraphs, возвращающее коллекцию абзацев, имеют объекты класса Documents, Selection, Range. Абзац — это не только последовательность символов, но и структурно выделенная единица текста, характеризуемая параметрами: отступом или выступом по отношению к границам листа документа, межстрочными интервалами, расположением первой строки, стилем и пр. Конечно, все эти характеристики связаны в первую очередь с самим объектом, точнее с классом Paragraph. Но, как это часто бывает в Office 2000, свойства и методы объекта включаются и в коллекцию, содержащую эти объекты. В какой-то мере происходит наследование снизу вверх.

У коллекции Paragraphs два метода, типичные для всех коллекций: Item и Add. Первый, как всегда, определяет элемент коллекции, заданный параметром Index. Абзацы не имеют имен, и индекс всегда задает порядковый номер элемента. Нумерация абзацев в коллекции начинается с 1. Метод Add используется для добавления нового пустого абзаца. Его синтаксис:

Необязательный параметр Range указывает точку вставки, — абзац вставляется перед той частью текста, которую задает объект Range. Если параметр опущен, абзац вставляется в конец документа или после объекта Selection и Range, если они вызвали метод Add.

Для вставки пустого абзаца чаще всего применяются методы объектов Range и Selection: InsertParagraph, InsertParagraphAfter, InsertParagraphBefore. Они не имеют параметров. Новый абзац заменяет текст или вставляется после или перед частью текста, заданного объектом Range или Selection, вызвавшего соответствующий метод.

Предупреждение:

Осторожнее с методом InsertParagraph: он заменяет весь имеющийся текст новым, пустым абзацем!

Для вставки текста в созданный пустой (или непустой) абзац могут быть использованы методы объектов Range и Selection: InsertAfter и InsertBefore. Их единственный параметр — Text — задает текст, добавляемый в начало или в конец части текста, заданной объектами Range и Selection, после чего объекты расширяются, дабы включить добавленный текст. Для удаления абзацев может использоваться метод Delete объектов Range и Selection.

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

  • OpenUp, CloseUp, OpenOrCloseUp — вставляют или удаляют фиксированное количество пробелов (12) перед абзацем. OpenOrCloseUp — переключатель: если есть пробелы, он их удаляет, нет — вставляет.
  • Indent и Outdent — увеличивают и уменьшают отступ абзаца (или всех абзацев коллекции) от края листа.
  • OutlineDemote, OutlinePromote и OutlineDemoteToBody — понижают и повышают уровень заголовка в интервале Heading1 : Heading8. При понижении последнего уровня -Heading 8 стиль заголовка меняется на стиль Normal.
  • Reset — удаляет форматирование, сделанное вручную, применяя формат, заданный стилем абзаца.
  • Space1, Space2, Space15 устанавливают в абзаце межстрочный интервал: одинарный, двойной или полуторный.
  • TabHangingIndent(Count) и TabIndent(Count) изменяют выступ или отступ абзаца от края листа на заданное количество позиций, определенное параметром Count. Если значение этого параметра положительно, происходит увеличение, иначе — уменьшение отступа (выступа).

Коллекция Paragraphs имеет общие свойства Count, Parents, Creator и Application. Кроме того, есть много свойств и методов, специфических для абзацев. Иногда, одной и той же цели можно добиться, вызывая метод или изменяя свойство. За подробностями отсылаем к документации.

Word позволяет
одновременно работать с одним или
несколькими документами. Документы и
коллекция документов — это центральные
понятия Word. Классы Document
и Documents
играют для Word ту же роль, что и классы
WorkBook
и WorkBooks
для Excel. Документ Word организован довольно
сложно. Текст — основа большинства
документов — может быть дополнен рисунками
и таблицами, с ним могут быть связаны
комментарии и исправления, сноски и
колонтитулы и т. д. Но об этом речь
впереди, а пока чуть подробнее поговорим
о тексте. Конечно, текст можно рассматривать
как последовательность символов, его
составляющих. Но ведь куда как часто мы
оперируем с более крупными единицами!
Word использует привычные понятия: символы,
слова, предложения, абзацы, разделы.

Существуют понятия
— существуют и классы, соответствующие
этим понятиям. Объект Application.
Word, представляющий
приложение Word, имеет свойство (встроенный
объект) Documents.
При обращении к свойству возвращается
объект класса Documents
— коллекция всех открытых документов.
Элемент коллекции — документ — это объект
класса Document.

Объект Document,
представляющий один документ, имеет
свойства:

Свойство

Возвращает

Characters

объект
класса Characters,
представляющий коллекцию символов
текста документа

Words

объект,
представляющий коллекцию слов

Sentences

объект,
представляющий коллекцию предложений

Paragraphs

объект,
представляющий коллекцию абзацев

Sections

объект,
представляющий коллекцию разделов
или секций документа

ListParagraphs

объект,
представляющий коллекцию списков,
входящих в текст документа

Конечно, это лишь
часть многочисленных свойств, связанных
с текстом документа. Заметьте: данными
свойствами обладает не только сам
документ. Ими обладают и объекты Selection
и Range,
представляющие части документа. При
этом возвращаемые объекты представляют
соответствующие коллекции данной части
документа.

Казалось бы, раз
есть коллекции Characters
или Words,
то должны существовать и классы Character
и Word,
представляющие отдельный символ или
отдельное слово. Но это не так. Элементами
коллекций Characters,
Sentences
и Words
являются объекты класса Range.
Нет операций, отдельно определенных
над символами, словами или предложениями,
— они определены над интервалами,
последовательностью символов,
представляемых объектом Range.
Ситуация здесь подобна Excel, где элементами
коллекции Cells
являются не ячейки, а все тот же объект
Range.

Абзацу и разделу
соответствуют свои классы объектов —
Paragraph
и Section
соответственно. Но у нас сейчас разговор
пойдет не о классах отдельных объектов,
а о коллекциях. Мы начнем с коллекции
документов.

Коллекция Documents

Коллекция Documents
представляет все открытые документы
Word. По своим свойствам и поведению она
напоминает коллекцию WorkBooks,
представляющую все открытые рабочие
книги Excel. Поэтому мы будем часто ссылаться
на уже описанные свойства и методы
коллекции WorkBooks.

Документы, как и
рабочие книги, могут существовать
постоянно и храниться во внешней памяти
— как файлы с обычным для документов
Word расширением .doc. При открытии приложения
Word автоматически открывается уже
существующий или новый пустой документ.
Так что в момент открытия приложения
коллекция документов не пуста и содержит
минимум один документ. Для добавления
в коллекцию новых элементов используются
методы:

  • Add
    — добавляет новые пустые документы;

  • Open
    — открывает файл, содержащий существующий
    документ и автоматически добавляет
    его в коллекцию.

Метод
Add
имеет
синтаксис:

Add(Template,NewTemplate)

Параметр Template,
задающий шаблон открытия документа,
является строкой с именем файла, хранящего
шаблон. Параметр не является обязательным
и, если он опущен, используется стандартный
шаблон Normal (файл Normal. dot). Второй параметр
(тоже необязательный) — NewTemplate
— булевого типа; он равен True,
если документ открывается, как шаблон.
Так что коллекция Documents
содержит не только документы, но и
шаблоны.

У метода Open
десять параметров. Обязательным является
только первый — FileName;
он задает имя файла, содержащего документ
(шаблон). Остальные параметры определяют
режимы открытия: пароль, статус файла,
преобразование формата при открытии и
т. п.

Документ удаляется
из коллекции при его закрытии. Вне
коллекции не может существовать открытый
документ. Метод Close
закрывает документ и одновременно
удаляет его из коллекции. Его синтаксис:

Close(SaveChanges,
OriginalFormat, RouteDocument)

Все параметры
являются необязательными. Первый
указывает действия, предпринимаемые
при закрытии документа, и может быть
одной из констант: wdSaveChanges,
wdDoNotSaveChanges,
wdPromptToSaveChanges.
В зависимости от константы сделанные
в документе изменения будут сохранены,
проигнорированы или решение будет
предоставлено пользователю в режиме
диалога. По умолчанию изменения
сохраняются при закрытии документа.
Параметр OriginalFormat
указывает формат сохранения документа
и может быть одной из констант:
wdWordDocument,
wdOriginalFormat,
wdPromptUser.
В первом случае при сохранении используется
формат документов Word, во втором —
оригинальный формат документа — тот,
что он имел при открытии; в последнем
случае решение принимает пользователь
в режиме диалога. По умолчанию
предполагается формат документа Word.
Третий параметр — булевого типа — равен
True,
если документ после закрытия направляется
следующему пользователю, который
принимает участие в работе над этим
документом. Данный параметр имеет смысл
лишь при коллективной работе над
документом в сети. По умолчанию он равен
False.

Метод Save
позволяет сохранять документы (шаблоны)
без закрытия и удаления из коллекции.
Этот метод имеют как объекты класса
Document,
так и коллекции — объекты Documents.
Если метод Save
вызывает коллекция, то сохраняются все
документы этой коллекции. При этом его
синтаксис:

Save(NoPrompt,
OriginalFormat)

Оба параметра
необязательны. Если значение первого
— True,
Word автоматически сохраняет все документы,
в противном случае возникнет диалог с
пользователем о сохранении каждого из
документов. Параметр OriginalFormat
задает формат сохранения так же, как и
в методе Close.
У метода Save,
используемого для сохранения отдельного
документа, параметров нет. Если сохраняется
новый документ, с которым еще не связано
имя файла, его хранящего, будет вызвано
диалоговое окно SaveAs, в котором пользователь
задаст это имя и, если надо, путь.

Для получения
доступа к элементу коллекции, как обычно,
можно вызвать метод Item.
Его единственный параметр Index
задает порядковый номер или имя документа
в коллекции. Item
является методом по умолчанию, так что
индекс можно непосредственно указывать
у объекта, задающего коллекцию.

Класс Documents
имеет типичные для коллекций свойства:

  • Application;

  • Count;

  • Creator;

  • Parent.

Эти свойства мы
описали, когда речь шла о коллекции
WorkBooks.
Закончим рассмотрение этой коллекции
примером:

Public
Sub WorkWithDocuments()

‘Работа
с коллекцией документов

Dim
N As Long, I As Byte

Dim
PathDir As String

PathDir
= «e:O2000CD2000Ch1»

With
Documents

N
= .Count

Debug.Print
«Число документов
в коллекции
Documents » & _

«при
открытии приложения
Word = «, N


Добавление 2-х новых документов (второй
представляет шаблон)

.Add

.Add
NewTemplate:=True

‘Добавление
двух существующих документов

.Open
(PathDir & «DocThree»)

.Open
(PathDir & «DocFive»)

N
= .Count

Debug.Print
«Число документов после 4-х вызовов
методов » _

&
«Add и Open =», N

Debug.Print
«Имена документов в коллекции:»

For
I = 1 To .Count

Debug.Print
.Item(I).Name

Next

‘Закрытие
двух документов и, следовательно,
удаление их из коллекции

.Item(2).Close

.Item(3).Close

N
= .Count

Debug.Print
«Число документов после двух вызовов
» _

&
«метода Close =», N

Debug.Print
«Имена документов, оставшихся в
коллекции:»

For
I = 1 To .Count

Debug.Print
.Item(I).Name

Next

End
With

End
Sub

Пример
1.5. (html,
txt)

Приведем результаты
отладочной печати (В данном примере
испульзуюся документы Dex1,
DocFive,
DocThree:

Число
документов в коллекции Documents при открытии
приложения Word = 1

Число
документов после 4-х вызовов методов
Add и Open = 5

Имена
документов в коллекции:

DocFive.doc

DocThree.doc

Template2

Document3

Dex1.dot

Число
документов после двух вызовов метода
Close = 3

Имена
документов, оставшихся в коллекции:

DocFive.doc

Template2

Dex1.dot

Обратите внимание
на то, что элементы добавляются в начало
коллекции, а не в ее конец, как это было
при добавлении элементов в коллекцию
WorkBooks
Excel. При удалении элемента происходит
перенумерация индексов, поэтому удаляется
второй и четвертый элемент коллекции
при последовательном выполнении методов
Ite(2). Close,
Item(3).Close.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

2006 г.

Word и его объекты
Лекция из курса «Основы офисного программирования и документы Word»

Биллиг Владимир Арнольдович
Интернет-Университет Информационных Технологий, INTUIT.ru

Назад Оглавление Вперёд

Документ Word и его проекты

Объекты, задающие программный проект, являются общими для всех документов Office 2000, в том числе и документа Word. Этой важной теме — программной работе с такими объектами посвящена лекция 4

Текст и объекты Range и Selection

Основной частью документа Word является, конечно, текст этого документа. Уже было сказано, как структурирован текст документа, рассмотрены коллекции — Characters, Words, Sentences, Paragraphs, которые позволяют работать с символами, словами, предложениями и абзацами текста. Говорил я также и о том, что только этими коллекциями не обойтись, и необходим общий класс объектов, позволяющий задать произвольную область текста. Таковыми являются два важных класса Range и Selection. Объекты этих классов широко используются при работе с текстом. Документы, поддокументы, разделы, все вышеупомянутые коллекции от Characters до Words имеют метод или свойство Range, возвращающие в качестве результат объект Range. Каждый объект Range задает область определения некоторого объекта, включая текст и все объекты, связанные с этим текстом — комментарии, ссылки и прочее. Так, если некоторый объект вызвал метод Range, то возвращаемый объект Range будет содержать область определения объекта, вызвавшего метод.

Объект Selection представляет выделенную область. Поскольку в каждом окне может быть только одна выделенная область, то одновременно может существовать лишь несколько объектов Selection по одному на каждое существующее окно или подокно. Заметим также, что, объект Selection всегда существует в окне, даже если и не сделано явного выделения некоторой области, в последнем случае объект Selection задает точку вставки, определенную позицией курсора.

Объект Document имеет метод Range, возвращающий объект Range, и метод Select, создающий объект Selection. Метод Range — это функция, возвращающая в качестве результата объект Range; метод Select — это процедура без параметров, которая создает объект Selection в качестве побочного эффекта. Заметьте существенную разницу между методами Range и Selection. В первом случае возвращается сам объект и поэтому можно запомнить возвращаемый объект и в программе одновременно работать с несколькими такими объектами. В случае вызова метода Selection объект не возвращается, следовательно, запомнить его нельзя, что и гарантирует уникальность объекта Selection.

Объект Range имеет метод Select, выделяющий область объекта Range, и определяющий, тем самым, новый объект Selection. Симметрично, объект Selection имеет свойство Range, возвращающее объект Range, соответствующий выделенной области.

Объекты Range и Selection столь же многообразны по своей структуре, как и объект Document. И даже большинство свойств у этих трех объектов одни и те же. Эти три объекта являются схожими. Это понятно, так как большинство частей документа: предложения, абзацы, разделы, таблицы, рисунки, комментарии, ссылки и многое другое — может составлять любую подобласть документа, в том числе и выделенную подобласть. Значит, большинство ранее описанных частей документа являются и частями (свойствами) объектов Range и Selection. Это приятно — ведь с большинством свойств этих объектов мы уже знакомы!

Объект Range напоминает матрешку: в каждую область вложена область поменьше. Вот пример корректного (хоть и не самого эффективного) задания объекта Range:

Листинг 1: html, txt

Сколько объектов Range упоминается в этом предложении? Правильный ответ: 6, но не 3. Напомним: на нижнем уровне отсутствуют классы, определяющие символ, слово или предложение — все эти объекты принадлежат классу Range.

Для объекта Selection нельзя построить такую хитрую цепочку вложений — ведь метод Select не возвращает объект Selection. Но можно построить такую же «хитрую» последовательность операторов, которая задает сужающуюся область выделения:

Листинг 1: html, txt

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

Объекты Range и Selection позволяют выполнять основные операции над текстом (и не только над текстом): «выделить», «добавить», «заменить», «удалить». У наших объектов большой набор методов, позволяющих реализовать эти операции. Все рассматриваемые здесь методы принадлежат обоим объектам, если не сделана специальная оговорка.

Выделение

Говоря в этом параграфе о выделении, я имею в виду не применение метода Select, а выделение в более широком смысле, умение задать некоторую подобласть данной области. Выделить некоторую часть текста означает, по существу, определение объекта Range или Selection. Оба объекта задают непрерывную область, а их свойства Start и End позволяют задать начало и конец области. Меняя эти свойства, можно задать нужную область выделения. Этот основной способ выделения мы не раз демонстрировали в наших примерах:

Dim myRange As Range, myRange1 As Range
With ActiveDocument
   Set myRange = .Range(Start:=.Sections(2).Range.Paragraphs(3).Range.Start, _
                              End:=.Sections(3).Range.Paragraphs(5).Range.End)
   Set myRange1 = .Sections(3).Range.Paragraphs(1).Range
End With

Листинг 1: html, txt

В первом случае при задании области используются параметры Start и End, во втором — задается вся область данного объекта. Область может изменяться автоматически при добавлении или удалении из нее части текста. Изменить область можно и путем ее перемещения. Этим занимается специальная группа методов перемещения Move. Прежде чем говорить о перемещении, рассмотрим сжатие области. Нередко нужна пустая область — точка вставки, параметры Start и End которой совпадают. Поэтому простейший способ сжатия — задать совпадающие значения этих параметров:

Листинг 1: html, txt

Для сжатия области можно применять специальный метод сжатия — Collapse(Direction). Область стягивается в начальную или конечную позицию. Направление сжатия задает параметр Direction, принимающий значения wdCollapseStart или wdCollapseEnd. По умолчанию область стягивается в начальную точку (значение параметра: wdCollapseStart). Если сжимается абзац, и он стягивается в конечную точку, точка вставки переносится за метку конца абзаца и устанавливается в начало следующего абзаца. Если такой эффект нежелателен, после сжатия применяется метод перемещения MoveEnd, передвигающий точку вставки назад на один символ:

Set myRange = ActiveDocument.Paragraphs(1).Range
myRange.Collapse Direction:=wdCollapseEnd
myRange.MoveEnd Unit:=wdCharacter, Count:=-1

Листинг 1: html, txt

Если есть методы сжатия области, то должны быть и методы расширения области. Основным из них является метод Expand(Unit). В зависимости от значения параметра Unit область можно расширить на слово, предложение, абзац, раздел, на строку или столбец таблицы, или на всю таблицу. Для объекта Selection область можно расширить на всю строку. Для расширения области на весь фрагмент можно использовать метод WholeStory, что впрочем эквивалентно вызову метода Expand(Unit := wdStory)

Метод Move является основным методом перемещения. Остальные методы — в той или иной степени его модификации. Метод Move(Unit, Count) сжимает область в точку, стягивая ее в начало или конец, и затем перемещает точку вставки. Параметр Unit определяет единицы перемещения, а Count — количество этих единиц и направление стягивания и перемещения (по умолчанию 1). Положительные значения этого параметра задают стягивание к концу и перемещение вперед, отрицательные — стягивание в начало и перемещение назад. Само стягивание означает перемещение на одну единицу. Метод возвращает количество единиц, на которое фактически произошло перемещение, или 0, если оно не осуществлено. Параметр Unit принимает значения wdCharacter (по умолчанию), wdWord, wdSentence, wdParagraph, wdSection, wdStory, wdCell, wdColumn, wdRow и wdTable.

Методы перемещения на сам текст не влияют — лишь изменяют область, заданную объектами Range и Selection. Поэтому эти методы применимы только к переменным типа Range, но не к фиксированным областям. Например, запись:

Листинг 1: html, txt

не имеет эффекта, поскольку область первого абзаца — вещь неизменяемая.

Метод Move стягивает область в точку, которая и перемещается, поэтому после его выполнения область исчезает, и остается только точка вставки. Методы MoveStart и MoveEnd перемещают начальную или конечную точку области, обычно расширяя тем самым область.

Конечно, для перемещения по тексту документу есть много различных возможностей, кроме группы методов Move. Стоит упомянуть группу методов Next, основным из которых является метод Next(Unit,Count). Основное отличие от метода Move с теми же параметрами состоит в том, что метод Next возвращает сам объект Range, в отличие от метода Move, возвращающего число символов, на которое произошло перемещение. Напомним также о тех возможностях перемещения, которыми обладают объекты Browser и Hyperlink, напомним о закладках, специально предназначенных для перехода к ним.

Удаление текста

Метод Delete позволяет удалить текст. Вызванный без параметров, он удаляет вызывающий его объект Range или Selection. Если он применен в форме Delete(Unit,Count), удаляется часть текста в указанной области. Параметр Unit задает единицы, но при удалении возможны только два значения: wdWord и wdCharacter. Параметр Count задает количество удаляемых единиц. Если область стянута в точку, удаляются символы перед точкой вставки или после нее в зависимости от знака параметра Count. Вот несколько примеров:

'Удаляется текст в области объекта myRange
myRange.Delete
' Удаляются первые три слова из области myRange1
myRange1.Delete Unit:= wdWord, Count :=3
'Область стягивается в точку
myRange1.Collapse Direction := wdCollapseStart
'Удаляются три первых слова из области, предшествующей myRange1
myRange1.Delete Unit:= wdWord, Count :=-3

Листинг 1: html, txt

Вставка текста

Группа методов Insert объектов Range и Selection позволяет осуществлять вставки в документ. Для вставки текста используются методы InsertBefore(Text) и InsertAfter(Text). Параметр Text типа String задает текст, вставляемый до или после области, заданной объектами Range или Selection. После вставки текста область автоматически расширяется, включая в себя добавляемый текст. Вот пример вставки нового абзаца в начало документа:

Dim myRange As Range
Set myRange = ActiveDocument.Range(Start:=0, End:=0)
myRange.Text = "дорогой "
myRange.InsertBefore "Мой "
myRange.InsertAfter "друг! "
myRange.InsertParagraphAfter

Листинг 1: html, txt

Свойство Text позволяет заменять текст в выделенной области, поэтому нет нужды вызывать метод Insert(Text), — лучше использовать свойство. Методы InsertBefore и InsertAfter безопасны, так как текст добавляется, не изменяя содержимого области. При вставке внутрь области, например, при использовании метода InsertSymbol или InsertParagraph, заменяется содержимое области. Эта вроде бы безобидная программка сотрет все содержимое документа, заменив его пустым абзацем:

Set myRange = ActiveDocument.Range
myRange.InsertParagraph

Листинг 1: html, txt

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

Public Sub test1()
   Dim myRange As Range
   Dim myPath As String
   
   With ActiveDocument
      myPath = .Path
      Set myRange = .Range(Start:=0, End:=0)
      myRange.InsertFile myPath & "DocTwo.doc"
   End With
End Sub

Листинг 1: html, txt

Работа с буфером

Известно, как полезен буфер при работе с одним и, особенно, с несколькими документами. Объекты Range и Selection в полной мере позволяют задействовать все возможности буфера. Метод Copy, не имеющий параметров, копирует объект (содержимое области) в буфер. Метод Cut, действуя аналогично, копирует объект в буфер, заодно удаляя его. Заметьте, что в отличие от предыдущей версии, теперь метод Cut работает, как ему положено, не только копируя объект, но и удаляя его, ранее удаления не происходило, вместо этого объект, вызывавший метод стягивался в точку. Метод Paste позволяет приклеить объект, помещенный в буфер. Рассмотрим пример:

.Public Sub test1()
   Dim myRange As Range
   Set myRange = ActiveDocument.Paragraphs(5).Range
   myRange.Select
   'Добавляем новый абзац
   myRange.InsertAfter "New Text"
   myRange.InsertParagraphAfter
   'Выделяем и затем вырезаем добавленный абзац и помещаем его в буфер
   myRange.MoveStart Unit:=wdParagraph
   myRange.Select
   Selection.Cut
   'Добавляем новый абзац
   Selection.InsertAfter "Новый текст!"
   Selection.InsertParagraphAfter
   'Добавляем абзац из буфера
   Selection.Collapse Direction:=wdCollapseEnd
   Selection.Paste
End Sub

Листинг 1: html, txt

Метод Paste позволяет «вклеить» содержимое буфера в область, заданную объектами Range и Selection. Эта операция опасна, так как происходит замена, а не добавление текста. Поэтому обычно метод Paste применяется к объектам Range и Selection, стянутым в точку вставки. В выполнении этого метода есть нюансы. У объекта Range содержимое буфера включается в его область, Объект Selection остается точкой вставки, расположенной после текста, добавленного из буфера.

Заметьте, в буфер можно копировать не только текст. В нашем следующем примере в буфер копируется рисунок, являющийся элементом коллекции TableOfFiguress. Напомню, что элементы этой коллекции вставляются аналогично символам текста и являются частью абзаца. В тестовом документе DocOne, с которым я работаю, в начало текста вставлен рисунок мышки. Я буду работать с первым абзацем этого текста, содержащим этот рисунок, как с обычным текстом, выделю рисунок, помещу его в буфер, а затем приклею в другом месте текста. Вот код соответствующей процедуры:

Public Sub CopyImage()
   'Копирование рисунка через буфер
   Dim MyRange As Range
   Set MyRange = Documents("DocOne").Paragraphs(1).Range
   With MyRange
      'Первый абзац этого документа содержит рисунок
      ' - элемент коллекции TableOfFiguress.Выделяем рисунок
      .MoveEnd Unit:=wdCharacter, Count:=-7
      .Select
      .Copy
   End With
      Set MyRange = ActiveDocument.Paragraphs(6).Range
      MyRange.Select
      Selection.Collapse Direction:=wdCollapseEnd
      Selection.Paste
   
End Sub

Листинг 1: html, txt

Иногда в буфер копируют формат текста. Этим занимается метод CopyFormat, копирующий формат по первому символу объекта Selection. Если этот символ — метка абзаца, копируется формат абзаца. Методом CopyFormat обладает только объект Selection.

Метод PasteFormat применяет форматирование, хранящееся в буфере к объекту Selection.

Метод PasteSpecial позволяет явно управлять форматированием в момент вставки объекта из буфера.

Назад Оглавление Вперёд

  «Пишется Manchester, читается Ливерпуль».
(англ. поговорка)

Пишется Paragraph, подразумевается Абзац.
Подразумевается Параграф, пишется Section.
(M.S. Word)

Текстовые документы

Понятие абзаца

Любой текст состоит из фрагментов, различающихся не только содержанием, но и назначением, оформлением, размерами. При этом основным смысловым фрагментом текстового документа является абзац.

Таким образом, абзац – это фрагмент текста, состоящий, как правило, из одного или нескольких предложений, объединённых общей мыслью. В роли абзаца может выступать также заголовок, пустая строка и даже рисунок. В конце абзаца после нажатия клавиши <Enter> проставляется неотображаемый маркер конца абзаца (Paragraph Mark) ¶.

Иногда абзац отожнествляют с отступом вправо – красной строкой, – что в корне неверно. Возможны абзацы с отступом влево – висячей строкой, – а также вовсе без отступа. Возможны даже пустые абзацы – без какого-либо содержимого.

Слово абзац имеет немецкое происхождение – abzatz. В немецком языке оно обозначало отступ, площадку, отдел.

Английским аналогом абзаца служит слово paragraph. В связи с этим, следует запомнить две простые формулы:

абзац = paragraph;

paragraph ≠ параграф.

Понятие раздела

В русском языке слово параграф является более крупной, чем абзац, смысловой единицей текста.

Этимология слова параграф позволяет заключить, что соответствующий этому термину фрагмент текста превышает по объёму размер страницы:

пара – два однородных объекта вместе;
графа – колонка текста, столбец таблицы;
пара_граф – пара страниц текста, раздел.

Ещё более крупными фрагментами текста выступают главы, части, отделы и другие разновидности разделов.

В английском языке понятию «раздел» соответствует слово section. Таким образом, будут справедливы следующие тождества:

section = раздел;

параграф = section.

Символы разметки текста

В текстовых редакторах символы разметки остаются скрытыми от автора текста. Возможность увидеть разметку текста и прочувствовать структуру документа предоставляют текстовые процессоры, в частности, Microsoft Word.

12 декабря 2018 года


Написать комментарий:

Все комментарии на это произведение:

Наверх

Понравилась статья? Поделить с друзьями:
  • Что такое palo для excel
  • Что такое ms word какой значок
  • Что такое ms word информатика тест
  • Что такое ms word информатика кратко
  • Что такое ms word его основные возможности