Excel 2007スプレッドシートを持っていますが、特定のワークシートを名前で印刷するためのVBAプロシージャを作成したいと思います。どうすればよいですか?
"FirstSheet","ThirdSheet",
たとえば、印刷したいのです"FourthSheet"
が、"SecondSheet".
シート名がわかっている場合は、次のPrintOut
ように関数を呼び出すだけです。
Sheets("Name").PrintOut
少量のシートの場合、この方法で非常に簡単です!
これを行うためにループする必要はありません。1 行のコードで十分です。
Sheets(Array("FirstSheet", "ThirdSheet", "FourthSheet")).PrintOut Copies:=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
目的のシート名を含めるには、の代わりにa を使用することをお勧めしArray
ます。
次のようなものが機能するはずです。
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
If (sh.Name = "Sheet1") Then
sh.PrintOut
End If
Next sh