Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1096to1100
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

Dateien mit Worksheets auflisten

Dateien mit Worksheets auflisten
Bernd
Hallo.
ich würde gerne meine Excel-Dateien mit den einzelen Worksheets pro Datei übersichtlich in einer neuen Exceldatei auflisten. Der Auswahldialog der untersuchenden Dateien sollte idealerweise ganze Verzeichnisse mit oder Unterverzeichnisse und evtl. auch die Auswahl einzelner Dateien per Mehrfachmarkierung umfassen.
Die Übersicht sollte sol gegliedert sein:
Spalte A: 1. Dateiname, Spalte B: Einzelne Worksheets der 1. Datei, dann 2. Dateiname in Spalte A, und einzelne Worksheets der 2. Datei in Spalte B usw. Wünschenwert wäre vielleicht ein Zeilenabstand zwischen den Blöcken (1 Block=Dateiname incl. der zugehörigen Worksheets).
Gruß
Bernd

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Dateien mit Worksheets auflisten
31.08.2009 14:36:23
JogyB
Hi.
Probier es mal so:
Sub list_Worksheets()
Dim daTeien
Dim myDatei
Dim schrZeile As Long
Dim i As Long
Dim quellWbk As Workbook
Dim zielWbk As Workbook
Application.ScreenUpdating = False
daTeien = Application.GetOpenFilename("Excel Dateien (*.xls), *.xls", , "Dateien auswählen", _
, True)
' Wenn kein Array, dann wurde nichts ausgewählt
If Not IsArray(daTeien) Then
Application.ScreenUpdating = True
Exit Sub
End If
' Übersichtsdatei erzeugen
Set zielWbk = Workbooks.Add
For i = zielWbk.Worksheets.Count To 2 Step -1
Application.DisplayAlerts = False
zielWbk.Worksheets(i).Delete
Application.DisplayAlerts = True
Next
With zielWbk.Sheets(1)
.Name = "Übersicht"
.Cells(1, 1).Value = "Dateiname"
.Cells(1, 2).Value = "Arbeitsblätter"
.Cells(1, 1).Font.Bold = True
.Cells(1, 2).Font.Bold = True
schrZeile = 2
' Events, Alerts und Berechnung aus, sind hier uninteressant
' Einfach zur Sicherheit, damit garantiert nichts ausgeführt wird
Application.EnableEvents = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
For Each myDatei In daTeien
On Error Resume Next
Set quellWbk = Workbooks.Open(myDatei, False, True)
On Error GoTo 0
.Cells(schrZeile, 1) = myDatei
If quellWbk Is Nothing Then
.Cells(schrZeile, 2) = "Datei konnte nicht geöffnet werden."
schrZeile = schrZeile + 2
Else
For i = 1 To quellWbk.Worksheets.Count
.Cells(schrZeile + i - 1, 2).Value = quellWbk.Worksheets(i).Name
Next
' i steht auf Worksheets.Count + 1, damit ergibt sich bei Addition von i die  _
gewünschte Leerzeile
schrZeile = schrZeile + i
quellWbk.Close False
End If
Set quellWbk = Nothing
Next
' Alles wieder an
Application.EnableEvents = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
.Cells(1, 1).EntireColumn.AutoFit
.Cells(1, 2).EntireColumn.AutoFit
End With
End Sub

Ist der Dateiname mit komplettem Pfad so ok oder willst Du nur den Dateinamen?
Gruss, Jogy
Anzeige
AW: Dateien mit Worksheets auflisten
31.08.2009 14:55:23
Bernd
Hallo Jogy,
sieht echt gut aus!!!! Die Variante ohne kompletter Pfad wäre mir noch "lieber"!!!
Viele Grüße und danke schon mal!
Viele Grüße
Bernd
AW: Dateien mit Worksheets auflisten
31.08.2009 15:13:54
fcs
Hallo Bernd,
passe den folgenden Abschnitt an:

For Each myDatei In daTeien
On Error Resume Next
Set quellWbk = Workbooks.Open(myDatei, False, True)
On Error GoTo 0
If quellWbk Is Nothing Then
.Cells(schrZeile, 1) = Mid(myDatei, InStrRev(myDatei, "\"))
Else
.Cells(schrZeile, 1) = quellWbk.Name
End If

Gruß
Franz
AW: Dateien mit Worksheets auflisten
31.08.2009 16:09:08
JogyB
Hi.
Noch eine Variante nur mit Dateinamen (ist wie bei fcs), listet allerdings noch den Pfad in D1 auf (ist ja für alle Dateien derselbe). Außerdem hatte ich vergessen, das ScreenUpdating wieder zu aktivieren.
Sub list_Worksheets()
Dim daTeien
Dim myDatei
Dim schrZeile As Long
Dim i As Long
Dim quellWbk As Workbook
Dim zielWbk As Workbook
Application.ScreenUpdating = False
daTeien = Application.GetOpenFilename("Excel Dateien (*.xls), *.xls", , "Dateien auswählen", _
, True)
' Wenn kein Array, dann wurde nichts ausgewählt
If Not IsArray(daTeien) Then
Application.ScreenUpdating = True
Exit Sub
End If
' Übersichtsdatei erzeugen
Set zielWbk = Workbooks.Add
For i = zielWbk.Worksheets.Count To 2 Step -1
Application.DisplayAlerts = False
zielWbk.Worksheets(i).Delete
Application.DisplayAlerts = True
Next
With zielWbk.Sheets(1)
.name = "Übersicht"
.Cells(1, 1).Value = "Dateiname"
.Cells(1, 2).Value = "Arbeitsblätter"
.Cells(1, 1).Font.Bold = True
.Cells(1, 2).Font.Bold = True
' Pfad eintragen
.Cells(1, 3).Value = "Pfad:"
.Cells(1, 4).Value = Left(daTeien(1), InStrRev(daTeien(1), "\"))
.Cells(1, 3).Font.Bold = True
.Cells(1, 3).HorizontalAlignment = xlRight
schrZeile = 2
' Events, Alerts und Berechnung aus, sind hier uninteressant
' Einfach zur Sicherheit, damit garantiert nichts ausgeführt wird
Application.EnableEvents = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
' Geht alle Dateien durch und liest die Worksheets aus
' Kann die Datei nicht geöffnet werden, wird ein Fehler in Spalte B geschrieben
For Each myDatei In daTeien
On Error Resume Next
Set quellWbk = Workbooks.Open(myDatei, False, True)
On Error GoTo 0
If quellWbk Is Nothing Then
.Cells(schrZeile, 1) = Mid(myDatei, InStrRev(myDatei, "\") + 1)
.Cells(schrZeile, 2) = "Datei konnte nicht geöffnet werden."
schrZeile = schrZeile + 2
Else
.Cells(schrZeile, 1) = quellWbk.name
For i = 1 To quellWbk.Worksheets.Count
.Cells(schrZeile + i - 1, 2).Value = quellWbk.Worksheets(i).name
Next
' i steht auf Worksheets.Count + 1, damit ergibt sich bei Addition von i die  _
gewünschte Leerzeile
schrZeile = schrZeile + i
quellWbk.Close False
End If
Set quellWbk = Nothing
Next
' Alles wieder an
Application.EnableEvents = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
.Cells(1, 1).EntireColumn.AutoFit
.Cells(1, 2).EntireColumn.AutoFit
End With
Application.ScreenUpdating = True
End Sub
Gruss, Jogy
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige