如何使用vba在PrintPreview中启用打印按钮

时间:2018-07-10 12:49:05

标签: excel vba excel-vba

我在Workbook_Open()事件中使用以下代码:

Application.Dialogs(xlDialogPrintPreview).Show

第一次单击启用内容,然后打开预览页面,但禁用“打印”选项

enter image description here

3 个答案:

答案 0 :(得分:2)

那是因为您使用的是旧版打印预览。

official Microsoft forums here上提出了类似的问题

此处引用的最佳答复:

  

     

通过取消设置打印区域,重复行和   如果显示“页面设置”对话框,则要重复的列将显示为灰色   通过“打印”选项。“我要打印并转到页面设置”。

     

我建议使用“页面布局”选项卡上的“打印标题”按钮   在功能区中进行必要的更改。

     

由于您是以前版本的资深人士,因此变灰是   如果您从“打印预览”选项中激活了“页面设置”,   而不是通过文件,页面设置。在用户界面的改组中   从2007年起,文件,打印实际上等效于   页面布局选项卡中的旧打印预览和页面设置选项   等同于“旧”文件页面设置。

     

希望这会有所帮助

所以总结一下

我可能会推荐以下代码: 显然,可能需要根据您所需的功能进行一些调整。目前尚不清楚您到底想达到什么目的。

Private Sub to_pagelayout()
   ActiveWidow.View = xlPageLayoutView
End Sub

产生以下结果

enter image description here

对于切换实际的功能区选项卡,我认为最好保留一个单独的问题。我还将保留指向官方文档here

的链接

答案 1 :(得分:2)

您也可以使用

Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")

与按文件›打印相同。


由于似乎这种奇怪的行为仅在以下宏被禁用之前发生:

使用受信任的证书定义"trusted locations"digitally sign您的VBA代码以解决此问题。在没有任何消息的情况下执行数字签名的代码或受信任位置的代码(在“信任中心”中具有相应设置的属性)。

无论如何,签名您自己/公司的代码来摆脱这些消息以获取可信任的代码是一个好主意,并使人们再次对该消息敏感(以免被粗心地单击掉)。

答案 2 :(得分:1)

在Excel 2007上具有相同的奇怪行为。

解决方法:使用Application.OnTime

Private Sub Workbook_Open()

  Application.OnTime Now + TimeValue("00:00:00"), "PrintPreviewOnWorkbookOpen"

End Sub

以及模块中的Sub PrintPreviewOnWorkbookOpen

Public Sub PrintPreviewOnWorkbookOpen()

  ThisWorkbook.PrintPreview

End Sub