Anzeige
Archiv - Navigation
1704to1708
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Array zum Gruppieren von Sheets

Array zum Gruppieren von Sheets
31.07.2019 11:15:17
Sheets
Hallo zusammen,
ich versuche mit Hilfe von VBA bestimmte Tabellenblätter zu Gruppieren und als PDF zu speichern. Da aber die Tabellenblätter, die gruppiert werden sollen, variabel sind, habe ich versucht, die Namen der gewollten Tabellenblätter in einem variablen Array (Sheetspdf) mit variabler Größe darzustellen. Die Namen der Tabellenblätter, die ausgewählt werden sollen, stehen in einem separaten Tabellenblatt (Tabelle 9 bzw. Tabellenblattliste).
Bisher habe ich folgenden Code
  • 
    Sub Pdf()
    Dim Dateiname As String
    Dateiname = "Dateiname"
    Dim Sheetspdf() As Variant
    Dim lngLastRow As Long
    Dim i As Long
    lngLastRow = Sheets("Tabellenblattliste").Cells(Rows.Count, 1).End(xlUp).Row
    ReDim Sheetspdf(lngLastRow - 1)  'hier wird die größe neu festgelegt.
    For i = 0 To lngLastRow
    Sheetspdf(i) = Tabelle9.Cells(i + 1, 1).Text
    Next i
    Sheets(Sheetspdf).Select
    Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _Dateiname & ".pdf", Quality _:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
    End Sub
    

  • Ich glaube noch nicht, dass meine Vorgehensweise mit dem Loop, der die Namen der Tabellenblätter in das Array einfügt und der Befehl "Sheets (sheetspdf).select" zur Auswahl der im Array genannten Tabellenblätter, richtig bzw. gut sind.
    Wäre super wenn mir jemand helfen könnte!!!
    Vielen Dank im Voraus!
    LG

    12
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Array zum Gruppieren von Sheets
    31.07.2019 13:04:39
    Sheets
    Hallo,
    teste mal:
    Sub Pdf()
    Dim Sheetspdf
    Dim lngLastRow As Long
    Const Dateiname As String = "Dateiname"
    With Sheets("Tabellenblattliste")
    lngLastRow = .Cells(Rows.Count, 1).End(xlUp).Row
    Sheetspdf = Application.Transpose(.Range(.Cells(1, 1), .Cells(lngLastRow, 1)).Value)
    End With
    Sheets(Sheetspdf).ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:=Dateiname & ".pdf", _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
    End Sub
    

    Gruß
    Rudi
    AW: Array zum Gruppieren von Sheets
    31.07.2019 13:49:05
    Sheets
    Hallo Rudi,
    bin am mitlesen. Bei deinem Code läuft das hier
    Sheets(Sheetspdf).ExportAsFixedFormat.....
    

    auf einen Fehler 438 Objekt unterstützt diese Eigenschaft oder Methode nicht
    Auf diese Weise läuft es zwar
    Sheets(Sheetspdf).Select
    Selection.ExportAsFixedFormat...
    

    und die PDF wird erstellt, die ist aber leer, keinerlei Daten drin.
    Offensichtlich muss hier mit Select gearbeitet werden und zusätzlich muss auch noch ein Blatt aus dem Array aktiv gesetzt werden.
    So geht es:
    Sub Pdf()
    Dim Sheetspdf() As Variant, Dateiname As String
    Dim lngLastRow As Long, i As Long
    Dateiname = "Dateiname"
    Application.ScreenUpdating = False
    With Worksheets("Tabellenblattliste")
    lngLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
    ReDim Sheetspdf(lngLastRow - 1)
    For i = 0 To lngLastRow - 1
    Sheetspdf(i) = .Cells(i + 1, 1)
    Next i
    End With
    Worksheets(Sheetspdf).Select
    Worksheets(Sheetspdf(0)).Activate
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Dateiname _
    & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, OpenAfterPublish:=False
    Worksheets("Tabellenblattliste").Activate
    End Sub
    
    Hast du eine Ahnung, ob das einer der seltenen Fälle ist, bei dem man um Select und Activate nicht herum kommt?
    Gruß Werner
    Anzeige
    AW: Array zum Gruppieren von Sheets
    01.08.2019 09:09:52
    Sheets
    Hallo,
    vielen Dank schonmmal für die 2 Ansätze.
    Irgendwie klappt das aber trotzdem nicht. Offensichtlich klappt das Gruppieren der Sheets durch das Array nicht mit Select oder Activate. Zumindest wird mir da immer ein Fehler angezeigt.
    Kann man das sonst auch vielleicht anders lösen? Prinzipiell versuche ich einfach, bestimmte Sheets in einer Pdf zu exportieren. Zur Not muss ich das dann eben mit einem statischen Array lösen...
    LG
    Jon
    Dann zeig mal eine Beispielmappe...
    01.08.2019 10:13:11
    Werner
    Hallo,
    ...mit dem Code, so wie du ihn jetzt drin hast. Die Beispielmappe sollte natürlich im Aufbau deinem Original entsprechen.
    Sonst wird das hier nur eine wilde Raterei.
    Gruß Werner
    Anzeige
    AW: Dann zeig mal eine Beispielmappe...
    01.08.2019 16:27:16
    Don
    Hallo,
    anbei die Beispielmappe: https://www.herber.de/bbs/user/131212.xlsm
    Es soll mit den beiden enthaltenen Makros jeweils eine Pdf Datei erstellt werden, die die entsprechenden Sheets enthält. Welche Sheets enthalten sein sollen, steht im Sheet "Tabellenliste".
    Vielen Dank im Voraus
    LG
    AW: Dann zeig mal eine Beispielmappe...
    01.08.2019 16:27:20
    Don
    Hallo,
    anbei die Beispielmappe: https://www.herber.de/bbs/user/131212.xlsm
    Es soll mit den beiden enthaltenen Makros jeweils eine Pdf Datei erstellt werden, die die entsprechenden Sheets enthält. Welche Sheets enthalten sein sollen, steht im Sheet "Tabellenliste".
    Vielen Dank im Voraus
    LG
    Anzeige
    AW: Dann zeig mal eine Beispielmappe...
    01.08.2019 16:27:21
    Don
    Hallo,
    anbei die Beispielmappe: https://www.herber.de/bbs/user/131212.xlsm
    Es soll mit den beiden enthaltenen Makros jeweils eine Pdf Datei erstellt werden, die die entsprechenden Sheets enthält. Welche Sheets enthalten sein sollen, steht im Sheet "Tabellenliste".
    Vielen Dank im Voraus
    LG
    AW: Dann zeig mal eine Beispielmappe...
    01.08.2019 16:27:41
    Don
    Hallo,
    anbei die Beispielmappe: https://www.herber.de/bbs/user/131212.xlsm
    Es soll mit den beiden enthaltenen Makros jeweils eine Pdf Datei erstellt werden, die die entsprechenden Sheets enthält. Welche Sheets enthalten sein sollen, steht im Sheet "Tabellenliste".
    Vielen Dank im Voraus
    LG
    Anzeige
    AW: Dann zeig mal eine Beispielmappe...
    01.08.2019 16:27:45
    Don
    Hallo,
    anbei die Beispielmappe: https://www.herber.de/bbs/user/131212.xlsm
    Es soll mit den beiden enthaltenen Makros jeweils eine Pdf Datei erstellt werden, die die entsprechenden Sheets enthält. Welche Sheets enthalten sein sollen, steht im Sheet "Tabellenliste".
    Vielen Dank im Voraus
    LG
    AW: Dann zeig mal eine Beispielmappe...
    01.08.2019 16:58:02
    peterk
    Hallo
    Da Deine Tabelliste eine Uberschrift enthält, konnte VBA die Tabelle REPORT1 nicht finden! Da Du von 4 Zeilen nur 3 wünscht, das Array aber bei 0 anfängt kommt statt +/-1 jetz +/-2
    So funktionierts:
    Sub Pdf()
        Dim Sheetspdf() As Variant, Dateiname As String
        Dim lngLastRow As Long, i As Long
    
        Dateiname = "C:\Users\Ich\AppData\Local\Temp\Reports"
    
        Application.ScreenUpdating = False
    
        With Worksheets("Tabellenliste")
            lngLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
            Redim Preserve Sheetspdf(lngLastRow - 2)
            For i = 0 To lngLastRow - 2
                Sheetspdf(i) = .Cells(i + 2, 1)
            Next i
        End With
    
        Worksheets(Sheetspdf).Select
        Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Dateiname & ".pdf", _
                                      Quality:=xlQualityStandard, IncludeDocProperties:=True, _
                                      IgnorePrintAreas:=False, OpenAfterPublish:=False
    
        Worksheets("Tabellenliste").Activate
    End Sub
    

    Anzeige
    Und was genau...
    31.07.2019 13:06:32
    {Boris}
    Hi,
    ...stört Dich an dem Code? Er sollte doch imho genau das tun, was Du möchtest...?
    VG, Boris
    AW: Und was genau...
    31.07.2019 13:38:23
    Werner
    Hallo Boris,
    nö, läuft hier auf einen Indexfehler
    For i = 0 To lngLastRow
    

    weil das -1 fehlt.
    Gruß Werner

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige