我在Excel中有一个VBA发布宏,它根据主配置工作表和一些包含数据的工作表生成已发布的工作簿。发布的版本是直接数据,仍然是格式化的,但没有公式,并且某些注释和背景信息被抑制。基本上,主配置包含要发布的工作表名称和范围的表。
要使已发布的版本可打印,某些工作表需要插入分页符。我意识到我可以根据相同的配置插入这些,并且我还可以通过在我的主工作表中添加更多列来更改特定工作表的打印方向和边距。
这是棘手的一点。如果表在发布过程中插入了一些分页符,我希望在分页符之前插入一个信息行,表示该表在下一页继续。但我只想让它显示在打印版本中,而不是在屏幕显示中显示。
有办法做到这一点吗?
答案 0 :(得分:3)
首先,插入一行并在分页符之前隐藏它。然后,您可以使用工作簿上的BeforePrint
事件查找其中包含“查看下一页”文本的所有行,然后取消隐藏它们。
Sub Workbook_BeforePrint(cancel as Boolean)
Dim rngCell as Range
set rngCell = ActiveSheet.UsedRange.Find("See Next Page")
while not rngCell is Nothing
if not rngCell is Nothing then
rngCell.EntireRow.Hidden = false
end if
set rngCell = ActiveSheet.UsedRange.FindNext()
loop
End Sub
这会让你有点需要离开,但是,它会使你容易受到没有AfterPrint
这一事实的影响。那么,你可以做的是:
Sub Workbook_BeforePrint(cancel as Boolean)
Application.EnableEvents = false
'Unhide rows here
if cancel then
Workbook.PrintPreview()
else
Workbook.PrintOut()
end if
'Rehide rows here
Application.EnableEvents = True
End Sub
请注意cancel
基本上会告诉您它是打印预览还是实际打印命令。我认为它非常好。