Excel – Registernamen per VBA auslesen
Der folgende Code listet die Namen sämtlicher Blätter, Tabellenblätter und Diagrammblätter in den Direktbereich des VBA-Editors. Mit Ansicht – Direktfenster bzw. STRG + G innerhalb des VBA-Editors kann man den Direktbereich einschalten.
Statt dessen hätte man die Namen der Register natürlich auch in ein Tabellenblatt eintragen können.
Statt ThisWorkbook hätte ich auch ActiveWorkbook wählen können. ThisWorkbook bezeichnet die Datei, in der sich das Makro befindet. ActiveWorkbook ist die gerade aktive Datei.
Option Explicit
Sub Seitennamen()
Dim lngSheets As Long 'Sheets sind alle Register
Dim lngWorksheets As Long 'Worksheets sind nur Tabellenblätter
Dim lngCharts As Long 'Charts sind nur die Diagrammblätter
Dim i As Long
lngSheets = ThisWorkbook.Sheets.Count
lngWorksheets = ThisWorkbook.Worksheets.Count
lngCharts = ThisWorkbook.Charts.Count
debug.print „Alle Register“
For i = 1 To lngSheets
Debug.Print ThisWorkbook.Sheets(i).Name
Next i
debug.print „Alle Tabellenblätter“
For i = 1 To lngWorksheets
Debug.Print ThisWorkbook.Worksheets(i).Name
Next i
debug.print „Alle Diagrammblätter“
For i = 1 To lngCharts
Debug.Print ThisWorkbook.Charts(i).Name
Next i
End Sub
Hier ist die zweite Variante des Codes mit Ausgabe im Tabellenblatt:
Option Explicit
Sub Seitennamen()
Dim lngSheets As Long ‚Sheets sind alle Register
Dim lngWorksheets As Long ‚Worksheets sind nur Tabellenblätter
Dim lngCharts As Long ‚Charts sind nur die Diagrammblätter
Dim i As Long
lngSheets = ThisWorkbook.Sheets.Count
lngWorksheets = ThisWorkbook.Worksheets.Count
lngCharts = ThisWorkbook.Charts.Count
For i = 1 To lngSheets
ThisWorkbook.Sheets(„Überblicksblatt“).Cells(1 + i, 1).Value = ThisWorkbook.Sheets(i).Name
Next i
For i = 1 To lngWorksheets
ThisWorkbook.Sheets(„Überblicksblatt“).Cells(1 + i, 2).Value = ThisWorkbook.Worksheets(i).Name
Next i
For i = 1 To lngCharts
ThisWorkbook.Sheets(„Überblicksblatt“).Cells(1 + i, 3).Value = ThisWorkbook.Charts(i).Name
Next i
End Sub
Und hier ist das Video: