如何通过VBA隐藏或禁用分页预览(Page Break Preview)的显示边距按钮?
隐藏/禁用分页预览/打印预览中的显示边距按钮
针对打印预览中的显示边距按钮
你可以通过操作打印预览对应的命令栏控件,在启动打印预览后隐藏或禁用该按钮,同时记得在打印预览关闭后恢复按钮状态,避免影响后续操作:
完整代码示例
Sub PrintPreviewWithoutMarginsButton() Dim printPreviewBar As CommandBar Dim marginsCtrl As CommandBarControl ' 定位打印预览工具栏中的"显示边距"按钮(控件ID=210) Set printPreviewBar = Application.CommandBars("Print Preview") If Not printPreviewBar Is Nothing Then Set marginsCtrl = printPreviewBar.FindControl(ID:=210) If Not marginsCtrl Is Nothing Then ' 隐藏按钮(也可以用Enabled=False禁用) marginsCtrl.Visible = False ' 设置打印预览关闭后自动恢复按钮显示 Application.OnTime Now, "RestoreMarginsButton" End If End If ' 启动打印预览 Application.CommandBars.ExecuteMso "PrintPreviewAndPrint" End Sub ' 恢复显示边距按钮的辅助过程 Sub RestoreMarginsButton() Dim printPreviewBar As CommandBar Dim marginsCtrl As CommandBarControl Set printPreviewBar = Application.CommandBars("Print Preview") If Not printPreviewBar Is Nothing Then Set marginsCtrl = printPreviewBar.FindControl(ID:=210) If Not marginsCtrl Is Nothing Then marginsCtrl.Visible = True End If End If End Sub
针对分页预览视图(非打印预览内的分页模式)
如果是要在工作表的分页预览视图中隐藏显示边距按钮,可以在工作簿的SheetActivate事件中添加逻辑:
代码示例(粘贴到ThisWorkbook模块)
Private Sub Workbook_SheetActivate(ByVal Sh As Object) Dim pageBreakBar As CommandBar Dim marginsCtrl As CommandBarControl ' 检查当前视图是否为分页预览 If ActiveWindow.View = xlPageBreakPreview Then Set pageBreakBar = Application.CommandBars("Page Break Preview") If Not pageBreakBar Is Nothing Then Set marginsCtrl = pageBreakBar.FindControl(ID:=210) If Not marginsCtrl Is Nothing Then marginsCtrl.Visible = False End If End If End If End Sub
注意事项
- 控件ID
210是Excel中"显示边距"按钮的通用标识,大部分版本都适用; - 如果使用
Enabled=False替代Visible=False,按钮会保留在界面上但无法点击; - 恢复按钮状态的步骤很重要,否则会导致后续打开打印预览时按钮一直隐藏。
内容的提问来源于stack exchange,提问作者J-Pierre Avognon
相关产品推荐
相关产品推荐

