我有一个Excel 2007电子表格,我想写一个VBA程序来按名称打印特定的工作表。我该怎么做?
例如,
我想打印"FirstSheet","ThirdSheet",
和"FourthSheet"
,但不打印"SecondSheet".
答案 0 :(得分:6)
如果您知道工作表名称,只需调用PrintOut
函数,如下所示:
Sheets("Name").PrintOut
对于少量的床单,这样就容易了!
答案 1 :(得分:1)
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
会更好。
答案 2 :(得分:1)
不需要循环来执行此操作,一行代码就足够了:
Sheets(Array("FirstSheet", "ThirdSheet", "FourthSheet")).PrintOut Copies:=1
答案 3 :(得分:0)
类似于以下内容应该有效:
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
If (sh.Name = "Sheet1") Then
sh.PrintOut
End If
Next sh