Excel Печать рабочих листов по имени - PullRequest
2 голосов
/ 22 апреля 2009

У меня есть таблица Excel 2007, и я хотел бы написать процедуру VBA для печати отдельных таблиц по имени. Как мне это сделать?

Например, Я хотел бы напечатать "FirstSheet","ThirdSheet", и "FourthSheet", но не "SecondSheet".

Ответы [ 4 ]

6 голосов
/ 26 ноября 2012

Если вы знаете имя листа, просто вызовите функцию PrintOut следующим образом:

Sheets("Name").PrintOut

Для небольшого количества листов это намного проще!

1 голос
/ 02 июля 2015

Для этого не нужно выполнять цикл, достаточно одной строки кода:

Sheets(Array("FirstSheet", "ThirdSheet", "FourthSheet")).PrintOut Copies:=1
1 голос
/ 22 апреля 2009
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.

0 голосов
/ 22 апреля 2009

Должно работать что-то похожее на следующее:

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