2

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

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

4

4 回答 4

7

如果您知道工作表名称,只需PrintOut像这样调用函数:

Sheets("Name").PrintOut

对于少量的纸张,通过这种方式更容易!

于 2012-11-25T22:36:07.320 回答
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 工作簿可以包含的工作表数量有限,我认为这可以忽略不计。但是,使用 aCollection来包含所需的工作表名称而不是 anArray会更好。

于 2009-04-22T17:03:39.663 回答
1

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

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