Создание и открытие документов Microsoft Word
Для создания примеров использования Microsoft Word можно использовать код создания контроллера, приведенный выше, и модифицировать его, заменяя комментарии кодом, манипулирующим свойствами и методами объекта Word.Application. Мы начнем с создания и открытия документов.
Создать новый документ Word можно, используя метод Add коллекции Documents объекта Application:
App.Documents.Add;
Как создать нестандартный документ? Очень просто - нужно указать имя шаблона в качестве параметра метода Add:
App.Documents.Add('C:\Program Files\ _
Microsoft Office\Templates\1033\Manual.dot');
Для открытия уже существующего документа следует воспользоваться методом Open коллекции Documents:
App.Documents.Open('C:\MyWordFile.doc');
Отметим, что свойство ActiveDocument объекта Word.Application указывает на текущий активный документ среди одного или нескольких открытых. Помимо этого к документу можно обращаться по его порядковому номеру с помощью метода Item; например ко второму открытому документу можно обратиться так:
App.Documents.Item(2)
Отметим, что нумерация членов коллекций в Microsoft Office начинается с единицы.
Сделать документ активным можно с помощью метода Activate:
App.Documents.Item(1).Activate;
Следующее, чему следует научиться - это сохранять документ Word и закрывать сам Word.
Сохранение, печать и закрытие документов Microsoft Word
Закрытие документа может быть осуществлено с помощью метода Close:
App.Documents.Item(2).Close;
или
App.ActiveDocument.Close;
Метод Close имеет несколько необязательных (в случае позднего связывания) параметра, влияющих на правила сохранения документа. Первый из них влияет на то, сохраняются ли внесенные в документ изменения, и принимает три возможных значения (соответствующие константы рекомендуется описать в приложении. См. листинг 2):
Третий параметр принимает значения True или False и влияет на то, пересылать ли документ следующему пользователю по электронной почте. Если эта функциональность не применяется, можно проигнорировать этот параметр.
Таким образом, при использовании этих параметров закрыть документ можно, например, так:
App.ActiveDocument.Close(wdSaveChanges, _
wdPromptUser);
Просто сохранить документ, не закрывая его, можно с помощью метода Save:
App.ActiveDocument.Save;
Этот метод также имеет несколько необязательных (в случае позднего связывания) параметров, первый из которых равен True, если документ сохраняется автоматически, и False, если нужно выводить диалоговую панель для получения подтверждения пользователя о сохранении изменений (если таковые были сделаны). Второй параметр влияет на формат сохраняемого документа, и список его возможных значений совпадает со списком значений второго параметра метода Close.
Напоминаем, что закрыть сам Word можно с помощью метода Quit объекта Word.Application. Этот метод имеет в общем случае три параметра, совпадающих с параметрами метода Close объекта Document.
Вывод документа на устройство печати можно осуществить с помощью метода PrintOut объекта Document, например:
App.ActiveDocument.PrintOut;
Если нужно изменить параметры печати, следует указать значения соответствующих параметров метода PrintOut (в случае Microsoft Word их около двадцати).
Вставка текста и объектов в документ и форматирование текста
Для создания абзацев в документе можно использовать коллекцию Paragraphs объекта Document, представляющую набор абзацев данного документа. Добавить новый абзац можно с помощью метода Add этой коллекции:
App.ActiveDocument.Paragraphs.Add;
Для вставки собственно текста в документ, тем не менее, применяется не объект Paragraph, а объект Range, представляющий любую непрерывную часть документа (в том числе и вновь созданный абзац). Этот объект может быть создан разными способами. Например, можно указать начальный и конечный символы диапазона (если таковые имеются в документе):
var
Rng: Variant;
...
Rng:= App.ActiveDocument.Range(2,4);
//со 2-го по 4-й символы
или указать номер абзаца (например, только что созданного):
Rng:= App.ActiveDocument.Paragraphs.Item(1).Range;
или указать несколько абзацев, следующих подряд:
Rng:= App.ActiveDocument.Range _
(App.ActiveDocument.Paragraphs.Item(3).Range.Start,_
App.ActiveDocument.Paragraphs.Item(5).Range.End)
Вставить текст можно с помощью методов объекта Range InsertBefore (перед диапазоном) или InsertAfter (после диапазона), например:
Rng.InsertAfter('Это вставляемый текст');
Помимо объекта Range текст можно вставлять с помощью объекта Selection, являющийся свойством объекта Word.Application и представляющий собой выделенную часть документа (этот объект создается, если пользователь выделяет часть документа с помощью мыши, и может быть также создан с помощью приложения-контроллера). Сам объект Selection можно создать, применив метод Select к объекту Range, например:
var
Sel: Variant;
...
App.ActiveDocument.Paragraphs.Item(3).Range.Select;
В приведенном выше примере в текущем документе выделяется третий абзац.
Если мы хотим вставить строку текста в документ либо вместо выделенного фрагмента текста, либо перед ним, это можно сделать с помощью следующего фрагмента кода:
var
Sel: Variant;
...
Sel:= App.Selection;
Sel.TypeText('Это текст, которым мы заменим _
выделенный фрагмент');
Отметим, что если свойство Options.ReplaceSelection объекта Word.Application равно True, выделенный текст будет заменен на новый текст (этот режим действует по умолчанию); если же нужно, чтобы текст был вставлен перед выделенным фрагментом, а не вместо него, следует установить это свойство равным False:
App.Options.ReplaceSelection:= False;
Символ конца абзаца при использовании объекта Selection может быть вставлен с помощью следующего фрагмента кода:
Sel.TypeParagraph;
К объекту Selection, так же как и к объекту Range, можно применить методы InsertBefore и InsertAfter. В этом случае, в отличие от предыдущего, вставляемый текст станет частью выделенного фрагмента текста.
С помощью объекта Selection, используя его свойство Font и свойства объекта Font, такие как Bold, Italic, Size,:, можно отформатировать текст. Например, таким образом можно вставить строку, выделенную жирным шрифтом:
Sel.Font.Bold:= True;
Sel.TypeText('Это текст, который мы выделим _
жирным шрифтом.');
Sel.Font.Bold:= False;
Sel.TypeParagraph;
Для наложения на вставляемый текст определенного заранее стиля можно использовать свойство Style этого же объекта, например:
Sel.Style:= 'Heading 1';
Sel.TypeText('Это текст, который станет _
заголовком');
Sel.TypeParagraph;
Нередко документы Word содержат данные других приложений. Простейший способ вставить такие данные в документ - использовать метод Paste объекта Range:
Var
Rng: Variant;
...
Rng:= App.Selection.Range;
Rng.Collapse(wdCollapseEnd);
Rng.Paste;
Естественно, в этом случае в буфере обмена уже должны содержаться вставляемые данные.
Если нужно поместить в буфер обмена часть документа Word, это можно сделать с помощью метода Copy объекта Range:
Var
Rng: Variant;
...
Rng:= App.Selection.Range;
Rng.Copy;
|