如果您多年来积累了很多工作簿,则可能需要从每个工作簿中打印一些工作表。例如,您可能有一个文件夹,其中包含前十年公司各部门的工作簿。如果您的公司有八个部门,则意味着该文件夹中有80个工作簿。现在,如果您需要打印第二季度和第三季度的数据(从每个工作簿的第二和第三工作表中打印),则开始发现问题。加载每个工作簿,然后打印选定的工作表可能会花费大量时间。

一种更快的方法是创建一个将为您进行打印的宏。

下面的宏首先要求您提供目录路径。如果指定了路径,宏将开始将每个工作簿文件加载到目录中,然后从每个文件中打印第二个和第三个工作表。 (该宏实际上并不关心目录中的工作簿文件类型,它们可能是XLS,XLSX或XLSM文件。它应该全部加载。)一旦打印,工作簿就关闭了。

Public Sub PrintWorkbooks()

Dim sCurFile As String     Dim sPath As String

'Get the path     sPath = InputBox("Starting path?", "PrintWorkbooks")

If sPath <> "" Then         On Error Resume Next         Application.ScreenUpdating = False         If Right(sPath, 1) <> "\" Then             sPath = sPath & "\"

End If         sCurFile = Dir(sPath & ".xls", vbNormal)

Do While Len(sCurFile) <> 0             Workbooks.Open sPath & sCurFile, , True             With Workbooks(sCurFile)

.Worksheets(2).PrintOut                 .Worksheets(3).PrintOut                 .Close SaveChanges:=False             End With             sCurFile = Dir             DoEvents         Loop         Application.ScreenUpdating = True         On Error GoTo 0     End If End Sub

显然,如果目录中有很多工作簿,则打印可能要花费一些时间。您可能想找点时间无所事事,然后让宏开始运行。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(11316)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: