Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
784to788
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
784to788
784to788
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Namen von Tabellenblättern aus Dateien auslesen

Namen von Tabellenblättern aus Dateien auslesen
28.07.2006 15:44:32
Tabellenblättern
Hallo EXCEL-Freunde,
in diesem Thread habe ich ein Problem mit Daten auslesen bereits gelöst
bekommen:
https://www.herber.de/forum/archiv/784to788/t785786.htm#785786
Jetzt möchte ich vorab folgendes veranlassen:
1. aus 4 Dateien in einem bestimmten Verzeichnis sollen alle Tabellenblattnamen
aufgelistet werden, die in der jeweiligen Datei zwischen zwei Tabellen stehen:
Beginn und Ende
2. diese Namen sollen aber nur dann aufgelistet werden, wenn in dem jeweiligen Blatt
die Summe der Zellen D4 und D5 mindestens 1 ist.
Ich habe zwar ein Muster, wie ich mir ein Inhaltsverzeichnis aus Tabellenblattnamen
erstelle, aber das reicht zum umschreiben nicht aus.
Besten Dank!
mfg
Private Tippgemeinschaft für Lotto oder KENO: http://www.kenostrategen.de

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

Betreff
Datum
Anwender
Anzeige
AW: Namen von Tabellenblättern aus Dateien auslese
28.07.2006 18:50:29
Tabellenblättern
Hallo Erich,
hier mal wieder ein Lösungsvorschlag von mir für eines deiner Problem
Gruß
Franz

Sub Tabellenblaetter()
'Listet aus Dateien die Tabelleblätter abhängig von Bedingungen
Dim wbNeu As Workbook, wb As Workbook, wks As Worksheet
Dim arrDateien, Pfad As String, i As Integer, j  As Integer
Dim NoNameVor As Boolean
Pfad = "c:\Test" 'Verzeichnis der Dateien
'Namen der Dateien
arrDateien = Array("Datei1.xls", "Datei2.xls", "Datei3.xls", "Datei4.xls")
NameVor = "Beginn" 'Name des Registers nach dem Tabellennamen ausgelesen werden sollen
NameNach = "Ende" 'Name des Registers bis vor dem Tabellennamen ausgelesen werden sollen
Set wbNeu = Workbooks.Add(Template:=xlWBATWorksheet) 'Neue Mappe mit einer Tabelle in die Namen geschrieben werden
'Spaltentitel eintragen
wbNeu.Sheets(1).Cells(1, 1) = "Dateiname"
wbNeu.Sheets(1).Cells(1, 2) = "Tabellenname"
Zeile = 2
'Dateien abarbeiten
For i = 0 To UBound(arrDateien)
Application.ScreenUpdating = False
Set wb = Workbooks.Open(FileName:=Pfad & "\" & arrDateien(i))
With wb
j = 1
' Blätter einschließlich Blatt Beginn überspringen
Do Until .Sheets(j).Name = NameVor
If j = .Sheets.Count Then
NoNameVor = True
MsgBox "In Datei '" & arrDateien(i) & "' wurde die Tabelle '" & NameVor & "' nicht gefunden."
Exit Do
End If
j = j + 1
Loop
' Blätter bis Blatt Ende auswerten und in Liste eintragen
' Falls Blatt Beginn fehlt werden keine weiteren Blattnamen ausgelesen
' Falls Blatt Ende fehlt werden alle weiteren Blätter ausgewertet
Do Until NoNameVor = True
j = j + 1
Set wks = .Sheets(j)
With wks
If .Name = NameNach Then Exit Do
'MsgBox "Summe D4:D5 in Tabelle " & .Name & ": " & .Range("D4") + .Range("D5") ' Testzeile
If .Range("D4") + .Range("D5") > 1 Then
wbNeu.Sheets(1).Cells(Zeile, 1) = wb.Name
wbNeu.Sheets(1).Cells(Zeile, 2) = wks.Name
Zeile = Zeile + 1
End If
End With
If j = .Sheets.Count Then
MsgBox "In Datei '" & arrDateien(i) & "' wurde die Tabelle '" & NameNach & "' nicht gefunden."
Exit Do
End If
Loop
NoNameVor = False
'Datei wieder schließen
.Close
End With
Application.ScreenUpdating = True
Next i
End Sub

Anzeige
AW: Namen von Tabellenblättern aus Dateien auslese
28.07.2006 19:58:07
Tabellenblättern
Hallo Franz,
das geht ja fix. Hatte nicht erwähnt, dass diesesmal die Ergebnisse nicht in eine neue
sondern in die bestehende Datei eingetragen werden sollen (Tabelle: Gefunden2).
Die Änderung, dass in diese Tabelle eingetragen werden soll kriege ich zwar hin,
aber wenn ich die Bereiche mit der neuen Datei eliminieren bzw. ändern will
erhalte ich laufend irgendwelche Fehlermeldungen oder der Code läuft durch,
aber würde was in den "Auslese-Dateien" ändern.
Besten Dank für leichte Korrektur.
Würde ich mich gerne mal revanchieren, dürfte aber in Sachen EXCEL aussichtslos sein.
mfg
Private Tippgemeinschaft für Lotto oder KENO: http://www.kenostrategen.de
Anzeige
AW: Namen von Tabellenblättern aus Dateien auslese
28.07.2006 21:03:38
Tabellenblättern
Hallo Erich,
hier das Makro mit den Anpassungen. Statt wbNeu gibt es jetzt das Objekt wksNamen, dem die Tabelle "gefunden2" zugewiesen wird
Da die Daten jetzt immer in das gleiche Blatt geschrieben werden hab ich einen 3-Zeiler zum Löschen der Altdaten eingefügt, ggf wieder löschen.
Alle datendateien werden jetzt schreibgeschützt geöffent, so das versehentliche überschreiben auch nicht mehr passieren kann.
Gruß
Franz

Sub Tabellenblaetter()
'Listet aus Dateien die Tabelleblätter abhängig von Bedingungen
Dim wb As Workbook, wks As Worksheet, wksNamen As Worksheet
Dim arrDateien, Pfad As String, i As Integer, j  As Integer
Dim NoNameVor As Boolean, SpwbName As Integer, SpwksName As Integer
Pfad = "c:\Test" 'Verzeichnis der Dateien
'Namen der Dateien
arrDateien = Array("Datei1.xls", "Datei2.xls", "Datei3.xls", "Datei4.xls")
NameVor = "Beginn" 'Name des Registers nach dem Tabellennamen ausgelesen werden sollen
NameNach = "Ende" 'Name des Registers bis vor dem Tabellennamen ausgelesen werden sollen
Set wksNamen = ThisWorkbook.Sheets("gefunden2") 'Blatt in dem die Namen eingetragen werden
'Spaltentitel eintragen
SpwbName = 1 ' Spalte in der Dateiname eingetragen wird
SpwksName = 2 ' Spalte in der Tabellenname eingetragen wird
wksNamen.Cells(1, SpwbName) = "Dateiname" 'ggf. ändern/löschen
wksNamen.Cells(1, SpwksName) = "Tabellenname" 'ggf. ändern/löschen
Zeile = 2 'Zeile ab der die Daten im Tabelenblatt eingetragen werden sollen
' Altdaten löschen, Passage entfernen, falls nicht erforderlich
With wksNamen
.Range(.Cells(Zeile, SpwbName), .Cells(.Rows.Count, SpwksName).End(xlUp)).ClearContents
End With
'Dateien abarbeiten
For i = 0 To UBound(arrDateien)
Application.ScreenUpdating = False
Set wb = Workbooks.Open(FileName:=Pfad & "\" & arrDateien(i), ReadOnly:=True)
With wb
j = 1
' Blätter einschließlich Blatt Beginn überspringen
Do Until .Sheets(j).Name = NameVor
If j = .Sheets.Count Then
NoNameVor = True
MsgBox "In Datei '" & arrDateien(i) & "' wurde die Tabelle '" & NameVor & "' nicht gefunden."
Exit Do
End If
j = j + 1
Loop
' Blätter bis Blatt Ende auswerten und in Liste eintragen
' Falls Blatt Beginn fehlt werden keine weiteren Blattnamen ausgelesen
' Falls Blatt Ende fehlt werden alle weiteren Blätter ausgewertet
Do Until NoNameVor = True
j = j + 1
Set wks = .Sheets(j)
With wks
If .Name = NameNach Then Exit Do
'MsgBox "Summe D4:D5 in Tabelle " & .Name & ": " & .Range("D4") + .Range("D5") ' Testzeile
If .Range("D4") + .Range("D5") > 1 Then
wksNamen.Cells(Zeile, SpwbName) = wb.Name
wksNamen.Cells(Zeile, SpwksName) = wks.Name
Zeile = Zeile + 1
End If
End With
If j = .Sheets.Count Then
MsgBox "In Datei '" & arrDateien(i) & "' wurde die Tabelle '" & NameNach & "' nicht gefunden."
Exit Do
End If
Loop
NoNameVor = False
'Datei wieder schließen
.Close
End With
Application.ScreenUpdating = True
Next i
End Sub

Anzeige
Perfekt gelöst!
29.07.2006 18:27:39
Erich
Hallo Franz,
besten Dank; wieder eine Super-Lösung - insbesondere das schreibgeschützte öffnen ist eine
klasse Idee!
Also bin jetzt (vorläufig) wunschlos glücklich!
mfg
Private Tippgemeinschaft für Lotto oder KENO: http://www.kenostrategen.de

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige