Таким образом, двусторонняя печать не является встроенной опцией для 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