【问题标题】:How to select "print on both sides" in MS Word 2013 vba如何在 MS Word 2013 vba 中选择“双面打印”
【发布时间】:2017-05-18 15:52:55
【问题描述】:

我希望能够通过 vba 在后台视图中以编程方式选择 MS Word 2013 打印预览中的双面按钮。

我无法让 PCL6 代码与我们的Sharp MFC 一起使用。有些文件我想让它默认双面打印,但不是在所有文件上。我找不到 ExecuteMso 按钮,因为后台视图似乎无法通过 vba 代码访问。 也许使用 WinAPI 或 sendkeys 会起作用,但我认为这很混乱且不可靠。

【问题讨论】:

  • 谢谢 Masoud 我看到了解决方法,但这不是我要问的。这是一种编程双面打印的方法,但是,我想要做的是在我的屏幕截图中选择按钮而不使用发送键。不是答案。
  • 我没有你提到的问题和下面答案的评论部分;但是,SendKey 是一个选项。不是最好的,但可能有效。
  • 是的,Masoud,我正在考虑将 Sendkeys 作为最后的手段,因为它通常不可靠,并且如果用户按下键或移动鼠标等,它会受到用户的干扰。

标签: vba ms-word


【解决方案1】:

当您录制宏并使用双面打印选项打印时,它不会在对话框中捕获双面打印。 这是我双面测试文档时生成的宏:

ActivePrinter = "\\MyServer\MyHPPrinter"
Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
        wdPrintDocumentWithMarkup, Copies:=1, Pages:="", PageType:= _
        wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, _
        PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
        PrintZoomPaperHeight:=0

在录制宏期间,文档进行双面打印。当我关闭/重新打开文档并运行宏时,它是单面打印的。使用 Office 365 中的 Word 并打印到 HP Laser Jet9050dn。我还尝试在 wdPrintAllPages 之后添加, ManualDuplexPrint:=False。这对我没有任何作用。

如果格式不正确,请见谅....这是我在这里的第一篇文章。

【讨论】:

  • 谢谢 Lobeon。格式看起来很不错。我要给出的唯一建议是在您添加的部分周围加上反引号而不是双引号,因此很明显, ManualDuplexPrint:=False 是“代码”。
【解决方案2】:

您可以使用名为ManualDuplexPrint 的选项控制一侧或两侧的打印。将其设置为False,它将双面打印。

假设您要双面打印整个文档。你会写:

Sub test()
    ThisDocument.PrintOut Range:=wdPrintAllDocument, ManualDuplexPrint:=False
End Sub

如果这是答案,请不要忘记点击问题旁边的复选标记! :)

【讨论】:

  • 对不起朋友,但“手动双面打印”不是我想要的。使用该选项,我必须去 MFC 并将纸张放回侧进纸托盘,然后返回计算机并按确定进行打印。当我的屏幕截图显示时,我正在寻找的是非常具体地将打印更改为“双面打印”。如您所见,屏幕截图未显示已选择手动。不是答案。
  • @user65795 我明白你想要什么。我亲自在我们自己的电脑和打印机上尝试过,它确实在两面都打印,而我没有转动纸张或类似的东西。您是否尝试过代码?
  • 您还确定您的打印机能够处理双面打印吗?这听起来可能是一个愚蠢的问题,但如果它是旧的,则可能根本没有办法这样做
  • 我尝试了代码 ibo,但它打印了第一面,然后弹出一个框,要求我将纸张放入侧托盘并按确定。所以它在技术上是“手动双面打印”,而不是“双面打印”。感谢您的努力,我知道这个程序,但它还不是我想要的。
  • 当您使用打印对话框设置双面时,它会自动双面打印吗?如果是这样,那我可以再看看
【解决方案3】:

我找到了双面打印的解决方法。 Word 不支持自动双面打印选项,而是特定于打印机,如果打印机支持,它会加载选项。

  • 在您的电脑上安装打印机驱动程序的副本版本。我从here 那里找到了很大的帮助。

  • 按照步骤安装驱动程序。重命名它(使用 Duplex 以便于理解)。

  • 转到打印首选项并将双面设置设置为默认值。

  • 现在在您的 VBA 代码中激活该打印机。

    ActivePrinter = "Brother DCP Duplex"

    Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _ 
        wdPrintDocumentWithMarkup, Copies:=1, Pages:="s1", PageType:= _
        wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, _
        PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
        PrintZoomPaperHeight:=0
    
  • 不需要ManualDuplexPrint:=False

我自己试过了,效果很好。

快乐编码。

【讨论】:

    猜你喜欢
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    相关资源
    最近更新 更多