2009-04-22 12 views
2

Excel 2007スプレッドシートがあります。特定のワークシートを名前で印刷するためのVBAプロシージャを作成したいと思います。これはどうすればいいですか?Excelプリントワークシート名前で

例えば、 は私が動作するはずです、次のような"FirstSheet","ThirdSheet","FourthSheet"ではなく"SecondSheet".

答えて

0

何かを印刷したいと思います:

Dim sh As Worksheet 
For Each sh In ActiveWorkbook.Worksheets 
     If (sh.Name = "Sheet1") Then 
      sh.PrintOut 
     End If 
Next sh 
+0

が、これはバッチで行うことができますか?例えば1回の印刷ジョブで複数のシートを印刷できますか? – Caveatrob

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") 

ネストされたlo opは、実行時のパフォーマンスに関して最適ではありません。 Excelワークブックに含めることができる枚数が限られているため、これはごくわずかです。しかし、Arrayの代わりにCollectionを使用して、希望のシート名を含む方が良いでしょう。それがこの方法によってかなりより簡単ですシートの少量のために

Sheets("Name").PrintOut 

:あなたはシート名を知っている場合

+1

あなたは*と*侮辱的な人たちが同じ時間を非難したと非難していると思いますか? – Tomalak

+0

私はあなたの壊れやすい自我を傷つけば申し訳ありません。 – jgallant

+0

私はそれがここで壊れやすい私の自我だとは思わない。 – Tomalak

5

単にこのようなPrintOut関数を呼び出します!

1

は、1行のコードで十分で、これを行うためにループする必要はありません。

Sheets(Array("FirstSheet", "ThirdSheet", "FourthSheet")).PrintOut Copies:=1 
関連する問題