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

Werte aus mehreren Dateien auslesen

Werte aus mehreren Dateien auslesen
07.11.2021 13:10:01
Sebastian
Hallo,
ich suche seit Tagen nach einer Lösung und komme nicht weiter.
Ich möchte aus mehreren Dateien, die auch in Unterordnern des angegebenen Ordners liegen, den Dateinamen und bestimmte Zellen auslesen. Dazu habe ich folgendes Makro gefunden, aber das Makro nimmt nur den aktuellen Ordner und nicht die Unterordner.
Ich habe gelesen das man dazu eine 2 Routine mit Call aufrufen muss, aber das übersteigt dann meine Fähigkeiten.
Könnt ihr mir hier bitte weiterhelfen? Ist eigentlich die Zeile zum auslesen des Dateinamens an der richtigen Stelle oder löst man das anders?
Danke im Voraus für eure Hilfe
Sebastian
Option Explicit
Const sXlsPath = "D:\Daten\Test"
Const iStartZeile = 3
Const iStartSpalte = 2
Const Zellen = "D8,D9"

Sub kopiereZellen()
Dim oFso As Object, oFile As Object, oWkb1 As Workbook, oWks0 As Worksheet, oWks1 As Worksheet
Dim aCells As Variant, iNextLine As Long, i As Integer
Set oWks0 = ThisWorkbook.ActiveSheet
aCells = Split(Zellen, ","):  iNextLine = iStartZeile
Set oFso = CreateObject("Scripting.FilesystemObject")
For Each oFile In oFso.GetFolder(sXlsPath).Files
If LCase(oFso.GetExtensionName(oFile.Name)) = "xlsx" Then
If ThisWorkbook.path  oFile.Name Then
Set oWkb1 = Workbooks.Open(oFile.path)
Set oWks1 = oWkb1.Sheets(1)
For i = 0 To UBound(aCells)
oWks0.Cells(iNextLine, iStartSpalte).Offset(0, i) = oWks1.Range(Trim(aCells(i))).Value
Next
oWks0.Cells(iNextLine, iStartSpalte).Offset(0, i) = oFile.Name
oWkb1.Close False
iNextLine = iNextLine + 1
End If
End If
Next
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte aus mehreren Dateien auslesen
07.11.2021 13:46:28
ralf_b
versuchs mal damit. Must du noch anpassen. Ist aus meiner Wühlkiste und hat bestimmt einer der Cracks hier geschrieben.
https://www.herber.de/bbs/user/148982.txt
gruß
rb
AW: Werte aus mehreren Dateien auslesen
07.11.2021 15:05:27
Sebastian
Hallo Ralf,
danke für das Makro, das ist genau das was ich gesucht habe.
AW: Werte aus mehreren Dateien auslesen
07.11.2021 14:21:11
Yal
Hallo Sebastian,
Es fällt eigentlich nicht viel: eine Schleife für die Unterordner.

For Each oOrdner In oFso.GetFolder(sXlsPath).SubFolders
For Each oFile In oFso.GetFolder(oOrdner).Files
Call Datei_lesen (oFile)
Next
Next
Solltest Du auch den Basis-Ordner durchgehen wollen, muss zusätzlich eine Schleife rein:

For Each oFile In oFso.GetFolder(sXlsPath).Files
Call Datei_lesen (oFile)
Next
For Each oOrdner In oFso.GetFolder(sXlsPath).SubFolders
For Each oFile In oFso.GetFolder(oOrdner).Files
Call Datei_lesen (oFile)
Next
Next
In Datei_lesen lagerst Du alles was die Behandlung der Datei-Objekt oFile angeht.
Du kannst auch die Library "Microsoft Scripting Runtime" unter Extras, Verweise anbinden. Dann kannst Du u.a. mit IntelliSense (Strg+Leertaste) die Eigenschaften und Methoden direkt auswählen. Das oFSO wird dann nicht mit CreateObject instanziert sondern mit
Dim oFso as New FileSystemObject
(FileSystemObject kommt mit IntelliSense als Vorschlag wenn "filesy" eingetippt ist)
VG
Yal
Anzeige
AW: Werte aus mehreren Dateien auslesen
07.11.2021 15:17:31
Sebastian
Hallo Yal,
danke, ich bin nur nicht so gut und kann mit deiner Antwort nichts anfangen. Das Makro was ich gepostet habe, habe ich auch nur gefunden, aber ich verstehe da nicht was da so alles passiert. Ich kann Makros anpassen und a bissl im Internet suchen. Aber vielleicht hilft das anderen.
Die Antwort und das Makro von Ralf passt für mich perfekt.
AW: Werte aus mehreren Dateien auslesen
08.11.2021 10:07:48
Yal
Hallo Sebastian,
dann gebe ich Dir eine Starthilfe. Trotzdem musst Du dich mit dem Code auseinandersetzen. Du willst doch nicht in aller Ewigkeit von anderen abhängig sein. Ausserdem, Code auf eigenen Rechner laufen zu lassen, dass man nicht versteht, ist nicht besonders empfohlen.
Dein Code sieht dann so aus:

Const sXlsPath = "D:\Daten\Test"
Const iStartZeile = 3
Const iStartSpalte = 2
Const Zellen = "D8,D9"
'unter Anbindung der Library (Extras, Verweise..) "Microsoft Scripting Runtime":
Dim oFso As New FileSystemObject
Sub kopiereZellen()
Dim oFile As File
Dim oOrdner As Folder
For Each oFile In oFso.GetFolder(sXlsPath).Files
Call Datei_Lesen(oFile)
Next
For Each oOrdner In oFso.GetFolder(sXlsPath).SubFolders
For Each oFile In oFso.GetFolder(oOrdner).Files
Call Datei_Lesen(oFile)
Next
Next
End Sub
Private Sub Datei_Lesen(oFile As File)
Dim QuellWB As Workbook
Dim QuellWS As Worksheet
Dim ZielWS As Worksheet
Dim aCells As Variant
Dim iNextLine As Long, i As Integer
Set ZielWS = ThisWorkbook.ActiveSheet
aCells = Split(Zellen, ",")
iNextLine = iStartZeile
If LCase(oFso.GetExtensionName(oFile.Name)) = "xlsx" Then
If ThisWorkbook.Path  oFile.Name Then
Set QuellWB = Workbooks.Open(oFile.Path)
Set QuellWS = QuellWB.Sheets(1)
For i = 0 To UBound(aCells)
ZielWS.Cells(iNextLine, iStartSpalte).Offset(0, i) = QuellWS.Range(Trim(aCells(i))).Value
Next
ZielWS.Cells(iNextLine, iStartSpalte).Offset(0, i) = oFile.Name
QuellWB.Close False
iNextLine = iNextLine + 1
End If
End If
End Sub
VG
Yal
Anzeige
AW: Werte aus mehreren Dateien auslesen
09.11.2021 01:58:34
Sebastian
Danke Yal,
danke, aber du machst aus mir auch keinen Programmierer mehr. Ich brauche sowas zu selten und ich "mache" in Excel eher viel über Formelm und weniger mit VBA.
Das Makro war für die Arbeit weil der Kunde keine Tools hat und ich in Excel eine Auswertung machen muss.
VG Sebastian

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige