1

Тема: VBScript: печать документов

Пример распечатывает документ MS Word C:\Temp\test.doc на принтере по умолчанию, никаких окон не отображается.

Dim w
Set W = CreateObject("Word.Application")
w.Visible = false
w.Documents.Open "C:\Temp\test.doc"
w.ActiveDocument.PrintOut
WScript.Sleep(1000)
w.Quit
Set w = Nothing

Автор примера - Alexbootch.

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

2

Re: VBScript: печать документов

Усовершенствованный пример от alexii:

Option Explicit

Const wdDoNotSaveChanges    =  0
Const wdPromptToSaveChanges = -2
Const wdSaveChanges         = -1


Dim objWord
Dim objDoc

Set objWord = WScript.CreateObject("Word.Application")

With objWord
    ' .Documents.Open(FileName, ConfirmConversions, ReadOnly, AddToRecentFiles)
    Set objDoc = .Documents.Open("C:\Temp\01.doc", False, True, False)
    
    ' 
    '- Метод 1. Печать в фоновом режиме -----------------------------------------
    objDoc.PrintOut True                         ' .PrintOut(Background)
    
    ' Здесь, при необходимости, можно делать что-то ещё

    Do
        WScript.Sleep 500
    Loop Until .BackgroundPrintingStatus = 0     ' Ждём окончания фоновой печати
    '----------------------------------------------------------------------------
    
    '- Метод 2. Печать напрямую -------------------------------------------------
    objDoc.PrintOut False                        ' .PrintOut(Background)
    '----------------------------------------------------------------------------
    
    Set objDoc = Nothing
    
    .Quit wdDoNotSaveChanges                     ' .Quit(SaveChanges)
End With

Set objWord = Nothing

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

3

Re: VBScript: печать документов

Аналогичный пример для MS Excel:

Option Explicit

Dim objExcel
Dim objWorkbook

Set objExcel = WScript.CreateObject("Excel.Application")

With objExcel
    ' .Workbooks.Open(FileName, UpdateLinks, ReadOnly,...)
    '
    '  UpdateLinks is:
    ' 0 Doesn't update any references 
    ' 1 Updates external references but not remote references 
    ' 2 Updates remote references but not external references 
    ' 3 Updates both remote and external references 
    '
    ' or .AskToUpdateLinks = False
    ' Теоретически возможно появление и других непредусмотренных диалогов
    ' Возможно, в этом случае стоит поиграться со свойством Application.DisplayAlerts
    
    Set objWorkbook = .Workbooks.Open("C:\Temp\01.xls", 0, True)
    
    objWorkbook.PrintOut
    objWorkbook.Saved = True
    
    Set objWorkbook = Nothing
    
    .Quit
End With

Set objExcel = Nothing

WScript.Quit 0

Автор примера - alexii.

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

4

Re: VBScript: печать документов

Печать файла ассоциированным приложением с помощью объекта JSSys3.dll:

Set oSys = CreateObject("JSSys3.Ops")
errCode = oSys.PrintFile("C:\Temp\test.odt")
WScript.Echo errCode '  0 - OK, -1 error, 2 - file not found,
' 3 - path not found, 5 - access denied, 32 - sharing violation
Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.