我在Workbook_Open()
事件中使用以下代码:
Application.Dialogs(xlDialogPrintPreview).Show
第一次单击启用内容,然后打开预览页面,但禁用“打印”选项
答案 0 :(得分:2)
那是因为您使用的是旧版打印预览。
在official Microsoft forums here上提出了类似的问题
此处引用的最佳答复:
嗨
通过取消设置打印区域,重复行和 如果显示“页面设置”对话框,则要重复的列将显示为灰色 通过“打印”选项。“我要打印并转到页面设置”。
我建议使用“页面布局”选项卡上的“打印标题”按钮 在功能区中进行必要的更改。
由于您是以前版本的资深人士,因此变灰是 如果您从“打印预览”选项中激活了“页面设置”, 而不是通过文件,页面设置。在用户界面的改组中 从2007年起,文件,打印实际上等效于 页面布局选项卡中的旧打印预览和页面设置选项 等同于“旧”文件页面设置。
希望这会有所帮助
所以总结一下
我可能会推荐以下代码: 显然,可能需要根据您所需的功能进行一些调整。目前尚不清楚您到底想达到什么目的。
Private Sub to_pagelayout()
ActiveWidow.View = xlPageLayoutView
End Sub
产生以下结果
对于切换实际的功能区选项卡,我认为最好保留一个单独的问题。我还将保留指向官方文档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