Daten aller Dateien eines Dateiordners einlesen

Bild

Betrifft: Daten aller Dateien eines Dateiordners einlesen
von: Ruth Reeh
Geschrieben am: 14.03.2005 09:40:18
Hallo zusammen,
ich habe ein Makro aus dem Netz so angepasst, dass definierte Zellinhalte aller (identisch aufgebauten) geschlossenen Excel-Dateien aus einem Dateiordner eingelesen werden. Dazu habe ich in den Zeilen der Spalte E der Zieldatei den Tabellennamen und in den Zeilen der Spalte F die jeweils anzusteuernde Zelle hinterlegt. Ab Spalte G werden die Ergbnisse aus den jeweiligen Dateien Spaltenweise aufgeführt.
In dem Makro -hier nur der m.E. betreffende Teil- muss ich derzeit nun jede in den Quelldateien abzugreifende Kriterium einzeln abgreifen (hier die in Zeile 24 und 25 definierten Zellen):


Sub Dateisuche(Laufwerk, Dateien)
   Dim tmp, Wdhlg
    On Error Resume Next
    If Right(Laufwerk, 1) <> "\" Then Laufwerk = Laufwerk + "\"
    tmp = Dir(Laufwerk & Dateien)
    Do While Len(tmp)
Cells(2, s) = Datei(Laufwerk & tmp)
        
        Cells(24, s).Formula = "='" & Pfad(Laufwerk & tmp) & "[" & Datei(Laufwerk & tmp) & "]" & [e24] & "'!" & [f24]
        If Cells(24, s) <> 1E+15 Then Cells(24, s) = Cells(24, s) Else Cells(24, s) = ""
        Cells(25, s).Formula = "='" & Pfad(Laufwerk & tmp) & "[" & Datei(Laufwerk & tmp) & "]" & [e25] & "'!" & [f25]
        If Cells(25, s) <> 1E+15 Then Cells(25, s) = Cells(25, s) Else Cells(25, s) = ""
s = s + 1
        tmp = Dir()
    Loop
    tmp = Dir(Laufwerk, vbDirectory)
    Do While Len(tmp)
       Application.StatusBar = Laufwerk & tmp
       If (tmp <> ".") And (tmp <> "..") Then
          If (GetAttr(Laufwerk & tmp) And vbDirectory) = vbDirectory Then
             Dateisuche Laufwerk & tmp, Dateien
             s = s - 1
             Wdhlg = Dir(Laufwerk, vbDirectory)
             s = s + 1
             Do While Wdhlg <> tmp
                Wdhlg = Dir()
             Loop
          End If
       End If
       tmp = Dir()
    Loop
   On Error GoTo 0
   Application.StatusBar = False
End Sub
Dadurch bin ich in der Anzahl der abzugreifenden Zellen eingeschränkt.
Wie kann ich dieses Makro so variabel gestalten, dass die in Spalte E und F definierten Zellen für jede Datei so lange ausgelesen werden, bis dort keine Zelle mehr definiert ist?
Ich hoffe, ich habe das Problem verständlich beschreiben können!
Vielleicht kann mir ja jemand helfen!
Vielen Dank!
Ruth
Bild

Betrifft: AW: Daten aller Dateien eines Dateiordners einlesen
von: Volker
Geschrieben am: 14.03.2005 13:30:55
Hallo Ruth,
statt .... & [e24] & "'!" & [f24] kannst Du natürlich auch
......& cells(24,5) & "'!" & [24,6] schreiben
Oder mit variablem Zeilenindex mal eine kleine Schleife, die in Zeile 24 startet und abbricht, wenn 1. leere Zelle kommt:
i=24
while cells(i,5)<>""
.....
......& cells(i,5) & "'!" & [i,6] schreiben
.....
i=i+1
wend
Gruß
Volker
Bild

Betrifft: AW: Daten aller Dateien eines Dateiordners einlesen
von: Ruth
Geschrieben am: 14.03.2005 17:29:34
Danke Volker,
hat super geklappt!
Ruth
P.S.: für Leute, die wie ich am Anfang stehen und versuchen, die Sache nachzuvollziehen:
Ich habe [i,6] durch cells(i,6)ersetzt und schon klappte es!
Bild

Betrifft: Nachtrag
von: Volker
Geschrieben am: 14.03.2005 18:00:22
Hallo Ruth,
thx für die Rückmeldung.
Das Komma hatte ich völlig übersehen.
[a1] ist nämlich schon identisch mit Range("A1") und Cells(1,1) was den Zellbezug angeht.
Aber Experten, wie ich keiner bin, raten von der Kurzschreibweise ab.
Hat irgendwas mit Speicherplatz und Rechenzeit zu tun.
Gruß
Volker
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Daten aller Dateien eines Dateiordners einlesen"