Добрый день, Делаю файлы word из Excel. На принтер по умолчанию печатается без проблем. Как можно выбрать определенный принтер? Прошелся макрорекордером в Word и эту строчку ActivePrinter вставил в код, но ничего не получается. Как эту строчку правильно оформить?
Может поможет эта тема Фишка вроде в том что Excel печатает только на принер по умолчанию, т.е. надо сначала поставить принер в коде по умолчанию, потом печатать, потом вернуть другое по умолчанию если требуется. Ну да Hugo так и пишет)
Спасибо за ссылку. Сделал так, если дело в портах, но всё равно не устанавливается
Код
For i = 0 To 10
On Error Resume Next
Application.ActivePrinter = "HP LaserJet Pro7" & Format$(i, "00")
If Err.Number = 0 Then Exit For
Next i
If Not Application.ActivePrinter Like "HP LaserJet Pro*" Then
MsgBox "Невозможно установить принтер", vbCritical
Exit Sub
End If
cherepushka, По указанной ссылке последний пост , только там нужно добавить Select * from Win32_Printer Where Caption= чтоб сразу нужный принтер получить и номер порта, а просто & Format$(i, "00") - не достаточно. Но номер порта по другому вычисляется.
БМВ, Вы писали, что есть иное решение. Решил попробовать его.
Код
Set WshNetwork = CreateObject("Wscript.Network")
set objWMI = GetObject("winmgmts:\\.\root\cimv2")
set Printers = objWMI.ExecQuery("Select * From Win32_Printer Where Name like '%LaserJet%'")
For Each Printer In Printers
If Printer.Name = strPrinterName Then
WshNetwork.SetDefaultPrinter strPrinterName
End If
Next
Но он всё равно печатает на дефолтный принтер. И до меня не доходит как из этого кода программа поймет, что нужно это то, что снизу печатать на установленном принтере? По этой строчке WshNetwork.SetDefaultPrinter strPrinterName?
cherepushka, Если не ошибаюсь, то принтер по умолчанию из системы приложение подберет при запуске, по этому оперировать нужно ActivePrinter но там кроме имени нужно указывать номер порта, если принтер локальный, тут был про сетевой разговор. Сейчас просто некогда рзбираться. Но ничего сложного нет и получить порт для локального. HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts
Добрый день всем. Можно ли выбрать принтер только для печати, потому что сейчас после печати - принтер который выбирается становится дефолтным. Это понятно, что в коде стоит SetDefaultPrinter(), но можно ли сделать, чтобы выбрал принтер - напечатал, а по умолчанию не устанавливал? Спасибо.
Код
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer Where Name like 'LaserJetPro'")
For Each objPrinter In colInstalledPrinters
RES = objPrinter.SetDefaultPrinter()
Next