Excel VBA 2007: выбрать все листы, кроме указанных (для выполнения действий с ними) - PullRequest
0 голосов
/ 14 июля 2010

Я пытаюсь создать макрос, который выбирает большинство листов в рабочей книге, а затем использует ExportAsFixedFormat для печати их в PDF.

Проблема в том, что я знаю листы, которые я не могу't хочу включить, я не знаю точно, какие листы будут размещены в данный момент, поэтому я не могу сделать статический список "Выберите эти листы" (было бы, наверное, больно поддерживатьв любом случае).

Есть ли какой-нибудь способ, скажем, "выбрать все, а затем отменить выбор этих конкретных листов" или что-то подобное?

Ответы [ 3 ]

2 голосов
/ 14 июля 2010

Как насчет:

Dim s As Worksheet
DoNotInclude = "Sheet2"
For Each s In ActiveWorkbook.Worksheets
    If InStr(DoNotInclude, s.Name) = 0 Then
        ''Do something
    End If
Next
1 голос
/ 14 июля 2010

Нет.Что не мешает вам делать это самостоятельно:

Public Sub SelectExceptThese(ByVal wb As Workbook, ExceptThese() As String)

  Dim ws() As String
  ReDim ws(1 To wb.Worksheets.Count)

  Dim wt As Worksheet
  Dim i As Long
  For Each wt In wb.Worksheets
    If Not IsInArray(ExceptThese, wt.Name) Then
      i = i + 1
      ws(i) = wt.Name
    End If
  Next

  If i > 0 Then
    ReDim Preserve ws(LBound(ws) To LBound(ws) + i - 1)
    wb.Worksheets(ws).Select
  End If

End Sub

Private Function IsInArray(arr() As String, val As String) As Boolean
  Dim i As Long

  For i = LBound(arr) To UBound(arr)
    If arr(i) = val Then
      IsInArray = True
      Exit Function
    End If
  Next
End Function
0 голосов
/ 23 июля 2015

Это может быть слишком поздно, чтобы ответить, но может быть полезно для других.

Если вы знаете, какие листы вы не хотите экспортировать, и если эти листы одинаковы все время, вы можете сделатьследующее ..

Sheets("sheetnotincluded1").Visible = False
Sheets("sheetnotincluded2").Visible = False

ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"FilePath.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True

 Sheets("sheetnotincluded1").Visible = True
 Sheets("sheetnotincluded2").Visible = True

Вы просто скрываете ненужные листы, экспортируете активную книгу и скрываете ненужные листы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...