Как заставить дуплексную печать работать в Excel? - PullRequest
0 голосов
/ 20 февраля 2019

Я хотел бы программно напечатать переднюю и заднюю часть (дуплекс) в Excel.Как я могу это сделать, не зависимо от типа принтера, на котором я печатаю (при условии, что он поддерживает двустороннюю печать)

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

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

  • Принтер A ((стандарт) <- ваш уже существующий принтер </em>
  • Принтер A (дуплекс) <- снова установите тот же принтер и установите дуплекс по умолчанию </em>

Тогда вам просто нужно указать Excel печатать на принтере с именем Printer A (duplex).Который затем окажется дуплексным (из-за настроек по умолчанию).

Я использовал эту технику несколько раз, и она хорошо работает.

0 голосов
/ 20 февраля 2019

Таким образом, двусторонняя печать не является встроенной опцией для Excel, и это довольно сложно сделать.

Есть некоторые сообщения о вызове API принтера, но они не зависят от того, какой принтер вы используете.Вы используете.

Я заработал, скомбинировав SendKeys со сценарием VBS.Вот и мы:

Sub SendKeysDuplex()

Application.Dialogs(xlDialogPrinterSetup).Show
ShellCall

End Sub

-

Sub ShellCall()

Shell "wscript C:\FileName.vbs", vbNormalFocus

End Sub

-

Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHshell.AppActivate "Excel.exe"
wsh.sleep 1000 ' wait 1 second
WSHshell.SendKeys "%psp"
WSHshell.SendKeys "{TAB 9}"
WSHshell.SendKeys "{Enter}"
wsh.sleep 3000 ' wait 1 second
WSHshell.SendKeys "{TAB 4}"
WSHshell.SendKeys "n"
WSHshell.SendKeys "y"
WSHshell.SendKeys "{Enter}"
wsh.sleep 500 ' wait 1 second
'WSHshell.SendKeys "{Enter}"
'wsh.sleep 500 ' wait 1 second
'WSHshell.SendKeys "%psp"
'wsh.sleep 1000
WSHshell.SendKeys "{TAB 7}"
WSHshell.SendKeys "{Enter}"
wsh.sleep 500
WSHshell.SendKeys "{Enter}"
wsh.sleep 500

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

Или просто сделайте одну кнопку кнопкой «Настройка принтера», ивторая кнопка для «Напечатать вещи»

Также обратите внимание: это должно быть выполнено с помощью кнопки на электронной таблице, поиск макроса и нажатие клавиши F5 не сделают этого.

Редактировать: установка принтера только на одной странице.Если вам нужно, например, 14 страниц, на первой вкладке есть кнопка, которая запускает этот макрос, и напечатайте 14 вкладок, которые нужно распечатать после.

Set WSHShell = WScript.CreateObject( "WScript.Shell" )
WSHshell.AppActivate " Excel.exe " 
wsh.sleep 1000
For i = 1 To 14
WSHshell.SendKeys  "^"&"{PGDN}" 
wsh.sleep 500
WSHshell.SendKeys "%psp" 
wsh.sleep 2500
WSHshell.SendKeys "{TAB 1}" 
wsh.sleep 500
WSHshell.SendKeys "o" 
wsh.sleep 3500
WSHshell.SendKeys "{TAB 4}" 
wsh.sleep 500
WSHshell.SendKeys "n" 
WSHshell.SendKeys "y" 
wsh.sleep 500
WSHshell.SendKeys "{TAB 2}" 
WSHshell.SendKeys "l" 
wsh.sleep 500
WSHshell.SendKeys "{Enter}" 
wsh.sleep 500
WSHshell.SendKeys "{Enter}" 
wsh.sleep 500
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...