我想用Excel以编程方式打印正反两面。在不知道我要打印的打印机类型的情况下该如何做(假设它支持双面打印)
答案 0 :(得分:1)
由于VBA无法直接选择双面打印选项,因此可以通过将同一台打印机两次添加到Windows并将第二台打印机的默认设置设置为双面打印来解决此问题。
然后,您只需要告诉Excel在名为Printer A (duplex)
的打印机上进行打印即可。然后将以双工模式结束(由于其默认设置)。
我多次使用这种技术,效果很好。
答案 1 :(得分:0)
因此双面打印不是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
这只会打印当前处于活动状态的标签。要让脚本先设置内容然后继续,我建议将其与Wait for shell command to complete
集成或者只是一个按钮是“设置打印机”按钮,另一个按钮是“打印东西”
另外请注意:这必须通过电子表格上的按钮执行,找到宏并按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