Excel按名称打印工作表

我有一个Excel 2007电子表格,我想写一个VBA程序来按名称打印特定的工作表。 我该怎么做呢?

例如,我想打印"FirstSheet","ThirdSheet","FourthSheet"而不是"SecondSheet".

如果您知道工作表名称,只需像这样调用PrintOut函数:

 Sheets("Name").PrintOut 

对于less量的床单,通过这种方式非常容易!

 Public Sub PrintByName(Names As Variant) Dim s As Worksheet Dim i As Integer If IsArray(Names) Then For Each s In ActiveWorkbook.Worksheets For i = 0 To UBound(Names) If StrComp(s.Name, Names(i), vbTextCompare) = 0 Then s.PrintOut End If Next i Next s End If End Sub 

打电话:

 PrintByName Array("FirstSheet", "ThirdSheet", "FourthSheet") 

就运行时性能而言,嵌套循环不是最优的。 由于Excel工作簿可以包含的页数有限,我认为这是微不足道的。 但是,使用Collection来包含所需的表名而不是Array会更好。

类似于下面的东西应该工作:

 Dim sh As Worksheet For Each sh In ActiveWorkbook.Worksheets If (sh.Name = "Sheet1") Then sh.PrintOut End If Next sh 

不需要循环来做到这一点,一行代码就足够了:

 Sheets(Array("FirstSheet", "ThirdSheet", "FourthSheet")).PrintOut Copies:=1