Visual Basic 6. Руководство разработчика

       

Печать и сохранение документов


Чтобы напечатать документ, следует вызвать метод

Printout:

Printout Background, append, range, outputfilename, from, to, _

item, copies, pages, PrintToFile, Collate,

_

ActivePrinterMacGX, Manual Duplex Print

Все параметры необязательные и соответствуют свойствам, которые вы можете установить в диалоговом окне Print программы Word. Значение параметра Background определяет, будет ли печать выполняться в фоновом режиме. Обычно этому параметру присваивают значение True (при автоматизации приложений).

Совет

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

AppWord.ActiveDocument.Printout from:=1, to:=3

При использовании VBA для указания Word напечатать документ процесс по­становки документа в очередь на печать выполняется не мгновенно. Если попы­таться закрыть Word сразу после вызова метода Printout, то он сообщит, что завер­шение работы в данный момент приведет к отмене процедуры печати. Чтобы удостовериться в том, что документ был записан в буфер (это означает, что можно правильно завершить работу Word), необходимо организовать цикл, в котором будет выполняться проверка значения свойства BackgroundPnntingStatus. До тех пор, пока это значение не равно 0, приложение выполняет запись информации в буфер. После того как будет переписана вся информация, можно выйти из Word. Этот прием будет использован в параграфе " VB6 в действии проект WordVBA" далее в этой главе.

Чтобы сохранить докумет, следует воспользоваться методом SaveAs объекта Document с помощью выражения.

SaveAs FileName, File Format, LockComments, Password, _



AddToRecentFiles, WritePassword, ReadOnlyRecomitiended, _

EmbedTrueTypeFonts, SaveNativePictureFormat, _

SaveFormsData, SaveAsOCELetter

Как и в случае с методом Print, параметры метода SaveAs соответствуют установкам диалогового окна Save As приложения. Если файл был предварительно сохранен, следует использовать метод Save, для обращения к которому вообще не требуется задавать параметры. Он позволяет выполнить сохранение документа в файле, используя опции, определенные в методе SaveAs (при самом первом сохранении документа) Чтобы сохранить активный документ в файле с другим именем, следует воспользоваться следующим выражением:


AppWord.ActiveDocument.SaveAs "с:\Documents\Report99.doc"

К свойствам объекта Document также относится свойство Saved,

которое воз­вращает значение True

или False,

указывающее, был ли документ изменен с момента последнего сохранения. Это свойство можно использовать в программе, чтобы определить, следует ли обращаться к методу Save (Сохранить) перед завер­шением работы приложения.

Ниже приведен фрагмент программы, позволяющей открыть существующий документ, распечатать его, а затем закрыть приложение. Следует отметить то обстоятельство, что с целью упрощения программы для создания нового экземпляра Word используется функция Create0bject(). Способ установления связи с сущест­вующим экземпляром Word рассматривался ранее.

Программа 14.9. Открытие и печать DOC-файла

Dim WordApp As Word.Application

Dim thisDoc As Document

Dim prnTime As Date

Dim breakLoop As Boolean

Set WordApp = CreateOb]act ("Word Application")

WordApp.Visible - False

WordApp.Documents.Open ("c:\sarriple.doc")

thisDoc.Printout True, True

prnTime = Time

breakLoop = False

While WordApp.BackgroundPrintingStatus <> 0 And Not breakLoop

If Minute(Time - prnTime) > 1 Then

Reply = MsgBox("Word is taking too long to print." _

& vbCrLf & "Do you want to quit7", vbYesNo)

'(Word слишком долго выполняет

'печать ... Остановить печать?)

If Reply = vbYes Then

breakLoop = True

Else

prnTime = Time

End If

End If

Wend

WordApp.Quit

MsgBox "Document saved and printed!"

' (Документ сохранен и напечатан')

До тех пор пока Word выполняет запись документа в буфер, значение свойства Background PrintingStatus не равно 0, а пока выполняется цикл, работа приложения не будет завершена.

Из-за аппаратных ошибок этот процесс может никогда не закончиться, и, сле­довательно, приложение будет заблокировано. Каждую минуту, программа спра­шивает пользователя, будет ли он ждать или нет. Если пользователь принимает решение завершить распечатку, переменная breakLoop принимает значение True, что приводит к прерыванию цикла While...Wend. Это достаточно простой подход, хотя он требует больших затрат времени работы процессора. Гораздо более эффек­тивным представляется использование в форме элемента управления Timer, позво­ляющего программно контролировать процесс печати документа.


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