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