按名称打印Excel工作表
问题描述:
我有一个Excel 2007电子表格,我想写一个VBA过程以按名称打印特定的工作表。我该怎么做呢?按名称打印Excel工作表
例如, 我想打印类似于以下"FirstSheet","ThirdSheet",
和"FourthSheet"
但不"SecondSheet".
答
的东西应该工作:
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
If (sh.Name = "Sheet1") Then
sh.PrintOut
End If
Next sh
答
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")
嵌套lo关于运行时性能,op并不是最优的。由于Excel工作簿可以包含的页数有限,我认为这可以忽略不计。但是,使用Collection
来包含所需的图纸名称而不是Array
会更好。
+1
您是否认为在任何情况下指责*和*同时侮辱他人都有帮助? – Tomalak 2009-04-22 17:53:49
答
如果你知道表名称只需调用PrintOut
功能是这样的:
Sheets("Name").PrintOut
对于少量的纸张是通过这种方式很容易的多!
答
不需要循环来做到这一点,一行代码就足够了:
Sheets(Array("FirstSheet", "ThirdSheet", "FourthSheet")).PrintOut Copies:=1
这可以在一个批处理来完成?例如我可以在单个打印作业中打印多张纸吗? – Caveatrob 2009-04-22 19:46:41