Excel的条件内容/格式打印与屏幕和分页符

问题描述:

我有一个Excel中的VBA发布宏,它基于主配置​​工作表和一些工作表与数据生成发布的工作簿。发布的版本是直接数据,仍然格式化,但没有公式,并且抑制了某些备注和背景信息。基本上,主配置包含要发布的工作表名称和范围表。Excel的条件内容/格式打印与屏幕和分页符

要使发布的版本可打印,某些工作表需要分页插入。我意识到我可以基于相同的配置插入它们,并且还可以通过向我的主工作表添加更多列来更改特定工作表的打印方向和页边距。

这里有棘手的一点。如果某个表在发布过程中插入了其中一些分页符,我希望在分页符之前插入一个信息行,以指示该表在下一页上继续存在。但是我只想让它在打印版本中显示,而不是在屏幕显示中显示。

有没有办法做到这一点?

首先,在分页符之前插入一行并隐藏它。然后,您可以使用工作簿上的BeforePrint事件查找其中包含“See Next Page”文本的所有行,然后取消隐藏它们。

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基本上将告诉你,如果它的打印预览或实际打印命令。我觉得它非常好。

+0

谢谢,我会给它一个去。 – 2009-07-26 02:44:24