2

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

"FirstSheet","ThirdSheet",たとえば、印刷したいのです"FourthSheet"が、"SecondSheet".

4

4 に答える 4

7

シート名がわかっている場合は、次のPrintOutように関数を呼び出すだけです。

Sheets("Name").PrintOut

少量のシートの場合、この方法で非常に簡単です!

于 2012-11-25T22:36:07.320 に答える
1

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

Sheets(Array("FirstSheet", "ThirdSheet", "FourthSheet")).PrintOut Copies:=1
于 2015-07-01T23:22:40.660 に答える
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ます。

于 2009-04-22T17:03:39.663 に答える
0

次のようなものが機能するはずです。

Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
        If (sh.Name = "Sheet1") Then
           sh.PrintOut
        End If
Next sh
于 2009-04-22T16:57:05.700 に答える