强制Excel将多个工作表打印为一个作业

在某些Excel(2003)工作簿中,当我尝试打印多个工作表时,Excel会将工作表视为单独的打印作业。 这是我一直在写的Excel自动化应用程序,因为它会导致Adobe PDF打印机停止并要求用户input第二个文件名。

看起来这可能与每个页面的指定打印区域有关,尽pipe清除(甚至重置)打印区域没有什么区别。

如何强制Excel将所有选定的工作表打印为单个打印作业? (我正在使用虚拟Adobe PDF打印机)

除此之外,如何在打印之前检测Excel何时将一个或多个选定的选项卡作为单独的打印作业?

我使用C3 / .net3.5自动化Excel 2003,并使用Acrobat 7 Pro安装的Adobe PDF打印机进行打印。

使用PrintOutEx() :

foreach (Excel.Worksheet ws in wb.Worksheets) { Excel.PageSetup ps = (Excel.PageSetup)ws.PageSetup; ws.PageSetup.Orientation = Excel.XlPageOrientation.xlLandscape; ws.PageSetup.Order = Excel.XlOrder.xlDownThenOver; ws.PageSetup.FitToPagesWide = 1; ws.PageSetup.FitToPagesTall = 50; ws.PageSetup.Zoom = false; } wb.Worksheets.PrintOutEx(); 

根据Microsoft的支持,Excel可能会决定为单个打印请求打印多个打印作业。 一个Excel打印作业覆盖一个或多个打印区域。 如果遍历打印区域并调用打印每个打印区域,则重新获得对输出的一些控制。

一旦所有作业都完成,您可以继续将所有作品绑定到一个PDF文件中。 前段时间我用这个方法(用Win2PDF驱动)把Excel转换成PDF格式。