Excel按名称打印工作表

时间:2009-04-22 16:42:54

标签: excel vba excel-vba printing worksheet

我有一个Excel 2007电子表格,我想写一个VBA程序来按名称打印特定的工作表。我该怎么做?

例如, 我想打印"FirstSheet","ThirdSheet","FourthSheet",但不打印"SecondSheet".

4 个答案:

答案 0 :(得分:6)

如果您知道工作表名称,只需调用PrintOut函数,如下所示:

Sheets("Name").PrintOut

对于少量的床单,这样就容易了!

答案 1 :(得分: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包含所需的工作表名称而不是Array会更好。

答案 2 :(得分:1)

不需要循环来执行此操作,一行代码就足够了:

Sheets(Array("FirstSheet", "ThirdSheet", "FourthSheet")).PrintOut Copies:=1

答案 3 :(得分:0)

类似于以下内容应该有效:

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