【问题标题】:Hide textbox while printing打印时隐藏文本框
【发布时间】:2017-06-02 21:03:11
【问题描述】:

我有一个文本框,里面有两个命令按钮,我不想在打印时显示它们。我已将下面列出的代码放在 FilePrint 和 FilePrintDefault Word 命令中。如果我使用快速打印按钮进行打印,它可以完美运行并且不打印。但是,如果我使用 Ctrl+P 打印并打开打印对话框,则会打印文本框。如何设置它,以便无论您如何打印,文本框都不会打印?这是几个人会使用的套用信函,所以我不能只为每个人更改 Word 打印设置,这就是我使用宏的原因。

Sub FilePrint() ' ' FilePrint Macro ' Prints the active document '
    With ActiveDocument
        .Shapes(1).Visible = msoFalse
        .PrintOut Background:=False
        .Shapes(1).Visible = msoTrue
    End With

End Sub  
Sub FilePrintDefault() ' ' FilePrintDefault Macro ' Prints the active document using the current defaults '
    With ActiveDocument
        .Shapes(1).Visible = msoFalse
        .PrintOut Background:=False
        .Shapes(1).Visible = msoTrue
    End With

End Sub

【问题讨论】:

  • 您是否尝试在两个函数中都设置断点?
  • ...谷歌搜索断点...
  • 代码中F9设置断点
  • 好的,通过断点运行代码会打印没有图像的文档,但是当我使用 Ctrl + P 打印时,它仍然会打印图像。

标签: vba printing ms-word


【解决方案1】:

您可以为此目的使用 Word 应用程序的 DocumentBeforePrint 事件。这是 MS 解释如何设置它的地方。 https://msdn.microsoft.com/en-us/library/office/ff821218.aspx

实际上,为了在打印后再次显示文本框,您使用事件过程调用您现有的过程(请确保禁用它们在循环中调用事件过程)然后取消打印。因此,无论您以何种方式初始化打印过程,事件过程都会获得控制权,运行您的两个过程一次,然后取消其他所有过程。

【讨论】:

  • 好的,我创建了一个新的类模块(Class1),选择App作为对象,DocumentBeforePrint作为过程。这生成了一个过程,我在其中放置了两个 call 语句。但是,当尝试初始化新的类模块时(根据您提供的链接中的要求),我收到此错误:运行时错误 424:需要对象。我使用的是链接中提供的确切代码,唯一的变化是而不是EventClassModule,我使用的是Class1,因为这是我的新类模块的名称。
  • 新类模块代码:Public WithEvents App As Word.Application Private Sub App_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean) Call FilePrint Call FilePrintDefault End Sub
  • 初始化对象代码:Dim X As New Class1 Sub Register_Event_Handler() Set X.App = Word.Application End Sub
  • 您是否运行了 proc Register_Event_Handler?通常,我们会将Set X.App = Word.Application 放在 Open 事件过程中,这样就不需要记住运行它(除非代码在您仍然必须再次手动运行时崩溃)。
  • ThisDocument 代码模块中选择左上角的Document 和右上角的Open。 VBA 将插入一个准备好的子程序,该子程序将在文档打开时运行。 (如果插入,则删除将在 New 上运行的那个。)将您现在拥有的所有内容放在 Sub Register_Event_Handler() 中。删除现在空的子。如果需要,您可以使用 F5 手动调用Document_Open 子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-19
  • 2021-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多