Основы офисного программирования и язык VBA

       

Коллекция 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)

Все параметры являются необязательными. Первый указывает действия, предпринимаемые при закрытии документа, и может быть одной из констант: wd SaveChanges, 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.Закончим рассмотрение этой коллекции примером:

Пример 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. При удалении элемента происходит перенумерация индексов, поэтому удаляется второй и четвертый элемент коллекции при последовательном выполнении методов Item(2). Close, Item(3).Close.



Закончим рассмотрение этой коллекции примером:

Public Sub WorkWithDocuments() 'Работа с коллекцией документов Dim N As Long, I As Byte Dim PathDir As String PathDir = "e:\O2000\CD2000\Ch1\" 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.


Содержание раздела