我有一個Excel 2007電子表格,我想寫一個VBA過程以按名稱打印特定的工作表。我該怎麼做呢?按名稱打印Excel工作表
例如, 我想打印類似於以下"FirstSheet","ThirdSheet",
和"FourthSheet"
但不"SecondSheet".
我有一個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
會更好。
您是否認爲在任何情況下指責*和*同時侮辱他人都有幫助? – 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