首页 > 解决方案 > 通过在多张纸上打印区域

问题描述

我想知道我是否可以“手动”(通过 VBA)重新组织打印区域的打印顺序。

假设我有一个包含 4 张工作表的 Excel 文档,Sheet1 到 Sheet4。在 Sheet2 和 Sheet3 中,根据情况,我可能有 1 个或多个打印区域(即要打印几页),1 个打印区域 = 1 个整页。其他纸张为“常规”(单张打印区域,单张纸打印)

如果每种情况下我只有一页,那就小菜一碟了……我将 SheetX 打印到第 X 页。

但是用户可以单击一个按钮在 Sheet2和/Sheet3中创建一个(或多个)新页面。我不想让他们创建新的工作表,因为他们会搞砸一切。根据之前的选择,显示或隐藏一些工作表;在同一张纸中有多个页面的情况下,今天的 VBA 中定义了打印区域。

如果我在 sheet2 和 Sheet3 中定义了多个页面/区域,我想按以下顺序打印它们:Sheet1、Sheet2-area1、Sheet3-area1、Sheet2-area2、Sheet3-area2、Sheet4。

在任何情况下,文档的打印都要通过 VBA 宏和用户定义的按钮。

我的另一个解决方案是使用 VBA 更改页码并按顺序打印所有工作表,然后用户将不得不手动重新排序页面。10-20 页的文件没什么大不了的,但仍然是错误和投诉的来源。

我认为我更需要关于如何做到这一点的一般想法,而不是代码片段。我看不出在哪里可以做到这一点。我知道怎么用

ActiveWorkbook.SheetX.PageSetup.printArea = "B2:J34","L2:,S34"

我需要类似的东西

ActiveWorkbook.PageSetup.printArea = Sheet1!"A1:H20", Sheet2!"B2:J34", Sheet3!"B2:L50", Sheet2!"L2:S34", Sheet3!"N2:V50", Sheet4!"A2:K22"

有什么线索吗?

标签: excelvba

解决方案


只是一个想法,但是如果您使用宏将所有打印区域作为单独的工作表组装到新工作簿中会怎样。按照您希望打印的顺序放置工作表,然后打印该工作簿并关闭它。所有范围复制可能会增加一些开销,但可以为您提供更多控制权。


推荐阅读