Опубликован: 25.03.2009 | Уровень: для всех | Доступ: свободно
Лекция 10:

Работа с документами

< Лекция 9 || Лекция 10: 1234 || Лекция 11 >
Аннотация: Лекция посвящена описанию коллекции Documents и объекта Document приложения Microsoft Word.

10.1. Коллекция Documents - открытые документы

Коллекция Documents включает в себя открытые документы с их полезными методами и свойствами. Наряду с объектами Document, которые входят в коллекцию, здесь мы подробнее рассмотрим уже известный вам объект ActiveDocument,

ActiveDocument имеет те же свойства и методы, что и любой Document - объект, однако, часто объектом ActiveDocument удобнее пользоваться.

Так же обратите внимание на объект ThisDocument. Он представляет собой тот документ, из которого запущен макрос.

Для начала давайте рассмотрим свойства и методы коллекции, а потом займемся объектом Document.

10.2. Методы коллекции Documents

10.2.1. Add - создаем новый документ

Этот метод добавляет новый объект Document в коллекцию Documents - то есть создает новый документ. Его можно использовать так (листинг 10.1.):

Documents.Add
Листинг 10.1. Создаем новый документ

При выполнении такого кода будет создан новый пустой документ на основе шаблона Normal. Чтобы ссылка на созданный документ была присвоена переменной, можете воспользоваться такой конструкцией (листинг 10.2.):

Dim obj_NewDoc As Word.Document
    Set obj_NewDoc = Application.Documents.Add
Листинг 10.2. Создаем новый документ и присваиваем ссылку на него объектной переменной

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

Метод Add может принимать несколько необязательных параметров. Полный вызов метода выглядит так:

Documents.Add (Template, NewTemplate, DocumentType, Visible)

Template (Шаблон) - отвечает за шаблон, который будет использован при создании файла. По умолчанию это Normal.dotm.

NewTemplate (Новый шаблон) - если этот параметр установлен в True - файл будет обрабатываться как шаблон. По умолчанию установлен в False.

DocumentType (Тип документа) - очень полезный параметр, который позволяет создавать документы различных типов. На тип документа указывает одна из констант, в частности, по умолчанию это wdNewBlankDocument - то есть пустой документ. Так же этот параметр может принимать значения wdNewEmailMessage (Почтовое сообщение), wdNewFrameset (Документ с рамками - такие используются при создании WEB-страниц), wdNewWebPage (WEB-страница).

Visible (Видимость) - по умолчанию установлен в True - то есть создаваемый документ видим для пользователя. Если вы хотите, сначала сформировать новый документ, а уже потом показать его пользователю - установите это свойство в False, а после окончания формирования документа - воспользуйтесь свойством Visible созданного документа, чтобы отобразить его.

10.2.2. Open - открываем документы

Метод Open используется для открытия существующих файлов, возвращая объект типа Document. Файл, имя которого задано при вызове метода, открывается и добавляется в коллекцию Documents. Метод может принимать множество параметров, однако основной - это FileName, который и задает имя открываемого файла.

Например, для открытия файла 1.docm, расположенного в корневом каталоги диска С, можно воспользоваться кодом из листинга 10.3.

Documents.Open FileName:="C:\1.docm"
Листинг 10.3. Открываем существующий документ

10.2.3. Close - закрываем все документы

Метод Close используется для закрытия всех открытых документов. Применяют его достаточно редко - удобнее закрывать каждый конкретный документ по отдельности. При вызове метода без параметров система задаст вопрос о сохранении документов, которые были изменены (листинг 10.4.).

Documents.Close
Листинг 10.4. Закрываем все документы

Полный вызов метода выглядит так:

Documents.Close(SaveChanges, OriginalFormat, RouteDocument)

Среди параметров для нас наибольший интерес представляют первых два.

SaveChanges (Сохранить изменения) отвечает за сохранение изменений. По умолчанию он установлен в wdPromptToSaveChanges (Вывести запрос о сохранении), так же он может быть установлен в wdDoNotSaveChanges (Не сохранять изменения) и wdSaveChanges (Сохранить изменения). Как видите, с помощью параметра wdSaveChanges можно организовать удобное и быстрое закрытие множества документов с сохранением изменений

OriginalFormat (Формат) - отвечает за формат сохраняемого документа. Может принимать различные значения: wdOriginalDocumentFormat (Оригинальный формат документа), wdPromptUser (Запросить формат у пользователя), wdWordDocument (Документ Word).

Вот как выглядит вызов метода Close, который сохраняет все открытые документы и закрывает их (листинг 10.5.)

Documents.Close (wdSaveChanges)
Листинг 10.5. Закрываем все документы, предварительно сохранив

Учтите - если какие-то из документов сохраняются в первый раз - вы получите запрос об имени документа.

10.2.4. Item - обращаемся к отдельным документам

10-01-Item.docm - пример к п. 10.2.4.

Метод Item позволяет обращаться к открытым документам (то есть - к объектам Document ), используя их индексы или имена. Нумерация документов начинается с единицы. Чтобы узнать общее количество открытых документов, можно воспользоваться свойством Documents.Count.

Например, с помощью нижеприведенного кода из листинга 10.6 мы поочередно выводим имена открытых документов с указанием номера документа в коллекции:

For i = 1 To Documents.Count
    MsgBox (Documents.Item(i).Name & _
    " - документ номер " & i)
Next i
Листинг 10.6. Выводим имена и номера документов

Очевидно, что свойство Count коллекции Documents позволяет узнать количество открытых документов, а свойство Name объекта Item(i) содержит имя документа с индексом i.

На рис. 10.1 вы можете видеть одно из окон с сообщением об имени и номере документа.

Окно сообщения об имени и номере документа

Рис. 10.1. Окно сообщения об имени и номере документа

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

MsgBox Documents("Мой документ.docx").Name
   MsgBox Documents.Item("Мой документ.docx").Name
   MsgBox Documents(1).Name
Листинг 10.7. Выводим имена и номера документов

10.2.5. Save - сохранение всех документов

Метод Save сохраняет все документы коллекции. Если документ сохраняется впервые - будет выведено окно с запросом имени файла. В листинге 10.8 приведен пример вызова метода.

Documents.Save
Листинг 10.8. Сохраним все документы в коллекции

10.3. Свойства коллекции Documents

Среди свойств коллекции Documents нас будет интересовать лишь одно - Count. Это свойство позволяет узнать количество элементов в коллекции Documents, то есть - количество открытых документов. В листинге 10.9 мы выводим в окне сообщения количество открытых документов

MsgBox ("Количество открытых документов: " & _
    Documents.Count)
Листинг 10.9. Сохраним все открытые документы

10.4. Объект Document

Объект Document - это открытый документ. У него есть множество свойств и методов, которые активно используются при программной работе с документами. Здесь мы рассмотрим важнейшие из них.

< Лекция 9 || Лекция 10: 1234 || Лекция 11 >
Евгений Ушаков
Евгений Ушаков
О стоимости курса
Александр Новиков
Александр Новиков
Справочник по объектам VBA
Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Михаил Алексеев
Михаил Алексеев
Россия, Уфа, УГАТУ, 2002