在打印时隐藏文本框

问题描述:

我有一个文本框,里面有两个命令按钮,我不想在打印时显示。我已将下面列出的代码放在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 
+0

您是否尝试在这两个函数中放置断点? –

+0

...谷歌搜索断点... – user4907546

+0

断点由代码中的F9设置。 –

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

实际上,为了在打印后再次显示文本框,您可以使用事件过程来调用您的现有过程(一定要禁用它们在循环中调用事件过程),然后取消打印。因此,无论您如何初始化打印过程,事件过程都需要控制,运行一次这两个过程,并取消其他所有操作。

+0

好吧,我创建了一个新的类模块(Class1),选择了App作为Object,并将DocumentBeforePrint作为过程。这产生了一个程序,我在其中放置了两个'call'语句。但是,当试图初始化新的类模块(按照您提供的链接中的要求)时,出现此错误:运行时错误424:对象必需。我使用链接中提供的确切代码,只是改变而不是'EventClassModule',我使用'Class1',因为那是我的新类模块的名称。 – user4907546

+0

新的类模块的代码:'公共WITHEVENTS应用作为Word.Application 私人小组App_DocumentBeforePrint(BYVAL文件作为文件,取消由于布尔) 呼叫FilePrint 呼叫FilePrintDefault 结束Sub' – user4907546

+0

初始化对象的代码:'昏暗X作为新类1 Sub Register_Event_Handler() Set X.App = Word.Application End Sub' – user4907546