Имя пользователя:
Пароль:
 

Название темы: Печать из директории
Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата Аэровафли:
1) Удалять все файлы в директории "Печать" после запуска скрипта и проведенной печати »
Зачем все? Только обработанные.

Слегка поправленный WSH код отсюда:
читать дальше »
Код: Выделить весь код
Option Explicit

Dim strTargetFolder
Dim strComputer

Dim objSWbemServicesEx
Dim objSWbemEventSource
Dim objSWbemObjectEx_Event
Dim objSWbemObjectEx_CIM_DataFile


strTargetFolder = "C:\Обмен\!Бланки\Печать"
strComputer     = "."

Set objSWbemServicesEx = GetObject("WinMgmts:\\" & strComputer & "\Root\CIMV2")

Set objSWbemEventSource = objSWbemServicesEx.ExecNotificationQuery( _
	"SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE " & _
	"TargetInstance ISA 'CIM_DirectoryContainsFile' AND " & _
	"TargetInstance.GroupComponent = 'Win32_Directory.Name=""" & Replace(strTargetFolder, "\", "\\\\") & """'" _
)


WScript.Echo "Monitor files creation and Print documents in [" & strTargetFolder & "]..."

Do
	Set objSWbemObjectEx_Event = objSWbemEventSource.NextEvent
	Set objSWbemObjectEx_CIM_DataFile = objSWbemServicesEx.Get(objSWbemObjectEx_Event.TargetInstance.PartComponent)
	
	WScript.Echo Now() & " |  | New file:    [" & objSWbemObjectEx_CIM_DataFile.Name & "]"
	
	Select Case UCase(objSWbemObjectEx_CIM_DataFile.Extension)
		Case "DOC", "DOCX"
			PrintByWord  objSWbemObjectEx_CIM_DataFile.Name
		Case "XLS", "XLSX"
			PrintByExcel objSWbemObjectEx_CIM_DataFile.Name
		Case Else
			' Nothing to do
	End Select
	
	WScript.Echo Now() & " |  | Delete file: [" & objSWbemObjectEx_CIM_DataFile.Name & "]"
	objSWbemObjectEx_CIM_DataFile.Delete
Loop

WScript.Quit 0
'=============================================================================

'=============================================================================
Sub PrintByWord(strFileName)
	Const wdDoNotSaveChanges = 0
	
	Dim objWord
	Dim objDoc
	
	Set objWord = WScript.CreateObject("Word.Application")
	
	WScript.Echo Now() & " |  | Print file:  [" & strFileName & "]"
	
	With objWord
		Set objDoc = .Documents.Open(strFileName, False, True, False)
		
		objDoc.PrintOut True
		
		Do
			WScript.Sleep 500
		Loop Until .BackgroundPrintingStatus = 0
		
		Set objDoc = Nothing
		
		.Quit wdDoNotSaveChanges
	End With
	
	Set objWord = Nothing
End Sub
'=============================================================================

'=============================================================================
Sub PrintByExcel(strFileName)
	Dim objExcel
	Dim objWorkbook
	
	Set objExcel = WScript.CreateObject("Excel.Application")
	
	WScript.Echo Now() & " |  | Print file:  [" & strFileName & "]"
	
	With objExcel
		Set objWorkbook = .Workbooks.Open(strFileName, 0, True)
		
		objWorkbook.PrintOut
		objWorkbook.Saved = True
		
		Set objWorkbook = Nothing
		
		.Quit
	End With
	
	Set objExcel = Nothing
End Sub
'=============================================================================

Следит за изменениями в каталоге.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:53, 04-09-2013 | #7

Название темы: Печать из директории