kufprivat
Goto Top

Daten aus geschlossenen Excel Dateien auslesen.

Hallo,

ich habe ein Problem, bei dem ich gern Hilfe annehmen würde.

In dem Verzeichnis "20130628" sind mehrere Hundert Unterordner . In jedem dieser Unterordner befindet sich eine Excel Datei mit dem Namen "Info.xls".
In allen diesen Excel Dateien befindet sich in der Zelle "B20" ein Wert, den ich auslesen und in der separaten Datei "Auswertung.xls" untereinander anzeigen lassen möchte.

Die Namen der Unterordner lauten wie folgt:
28.06_1997 (1)
28.06_1997 (2)
28.06_1997 (3)
28.06_1997 (4)
28.06_1997 (499)
28.06_1997 (500)


Wie kann ich dieses am besten anstellen. Ich komme da einfach nicht weiter.

Vorab vielen Dank für eure Mühe

Kai

Content-ID: 210703

Url: https://administrator.de/contentid/210703

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

bastla
Lösung bastla 05.07.2013, aktualisiert am 23.11.2015 um 19:57:31 Uhr
Goto Top
Hallo kufprivat und willkommen im Forum!

Das könnte etwa so gehen (als Makro in der "Auswertung.xls"):
Sub WerteHolen()

' Quelle  
Ordner = "D:\20130628"  
Datei = "Info.xls"  
Zelle = "B20"  

' Ziel  
Spalte = "A"  
AbZeile = 2

Set Ziel = ThisWorkbook.ActiveSheet
Zeile = AbZeile

Set fso = CreateObject("Scripting.FileSystemObject")  
For Each Folder In fso.GetFolder(Ordner).SubFolders 'alle Unterordner durchgehen  
    Pfad = Folder.Path & "\" & Datei 'vollständigen Dateipfad erstellen  
    If fso.FileExists(Pfad) Then ' wenn Datei gefunden ...  
        Set Quelle = Workbooks.Open(Pfad) '... diese öffnen ...  
        '... Wert auslesen und übertragen  
        Ziel.Cells(Zeile, Spalte) = Quelle.Worksheets(1).Range(Zelle).Value
        Quelle.Close '... und Datei wieder schließen  
        
        Zeile = Zeile + 1 'nächste Zeile in der Zieldatei  
    End If
Next
MsgBox "Fertig."  
End Sub
Vorab wäre noch die entsprechende Zeile der Zieltabelle zu löschen ...

Grüße
bastla
kufprivat
kufprivat 06.07.2013 aktualisiert um 09:18:29 Uhr
Goto Top
Hallo bastla,

das funktioniert SUUUPER.

Vielen, vielen Dank.


Könnte man das noch etwas verfeinern, in dem man den Pfad für die Unterordner aus der "Auswertung.xls" ausließt?

Erläuterung:
da sich die Pfade zum Auslesen der Dateien laufend ändern, würde ich den aktuellen Pfad gern in der "Auswertung.xls" in der Zelle "A1" angeben und das Makro holt sich die Pfadangabe dann aus der Zelle "A1".
Ich kann dieses aber leider nicht selber realisieren und würde mich freuen, wenn ihr mir dabei nochmals helfen könntet.

Danke und Gruß
Kai
bastla
Lösung bastla 06.07.2013, aktualisiert am 23.11.2015 um 19:57:25 Uhr
Goto Top
Hallo kufprivat!

Ändere die Zeile 4 auf
Ordner = Range("A1").Value
Grüße
bastla
kufprivat
kufprivat 06.07.2013 um 11:28:04 Uhr
Goto Top
Vielen Dank bastla ... ihr seid die Größten. face-smile
kufprivat
kufprivat 23.11.2015 um 19:57:11 Uhr
Goto Top
Hallo hier bin ich nochmals zum selben Thema.
der Code läuft immer noch super, aber ich müsste nun gern folgendes ändern:
- die auzulesenen Dateinamen sind immer noch im selben Unterordner aber haben jetzt unterschiedliche Dateinamen. Kann ich in Zeile 05 des Codes "*.xls" schreiben, damit alle Excel Dateien in diesem Unterordner ausgelesen werden???

- Ich möchte nun aus mehreren Zellen Daten auslesen. Und zwar aus: B20, C20, D20 und E17. Die dort enthaltenen Daten sollen wieder in die Datei "Auswertung.xls" (Tabelle1) aber nun in die Zellen B2, C2, D2 und E2 geschrieben werden.

Ich hoffe ihr könnt mir wieder weiterhelfen und verbleibe freundlichst
Kai
sanktis
sanktis 21.08.2019 um 10:14:00 Uhr
Goto Top
Ich kämpfe hier gerade mit was ähnlichem. Habe aber auch noch keine Lösung.


Pfad = H:\excel\mitarbeiter
Dateinamen = *.xls (Also explizit sind es die Namen der MItarbeiter)
Worksheet = 2019
Bezug = W8

Ich habe ein Script gefunden dass zwar die Worksheets aufmacht aber eigentlich dafür gedacht ist darin eine Anpassung vor zu nehmen.
Zur Zeit versuche ich verzweifelt in der einen Sektion eine Cell Copy hinzubekommen und in eine andere Datei zu schreiben.

https://www.thespreadsheetguru.com/the-code-vault/2014/4/23/loop-through ...

Weiter muss ich noch einbauen dass er den nächsten Wert dann in eine neue Target Cell schreib.
Zeile = Zeile + 1 'nächste Zeile in der Zieldatei

Alles nicht so einfach wenn man hier keine Übung hat ;)