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ワークブックに含めることができる枚数が限られているため、これはごくわずかです。しかし、Array
の代わりにCollection
を使用して、希望のシート名を含む方が良いでしょう。それがこの方法によってかなりより簡単ですシートの少量のために
Sheets("Name").PrintOut
:あなたはシート名を知っている場合
単にこのようなPrintOut
関数を呼び出します!
は、1行のコードで十分で、これを行うためにループする必要はありません。
Sheets(Array("FirstSheet", "ThirdSheet", "FourthSheet")).PrintOut Copies:=1
が、これはバッチで行うことができますか?例えば1回の印刷ジョブで複数のシートを印刷できますか? – Caveatrob