ich habe ein Makro Dies habe ich mal aus diesem Forum bekommen.
Dies funktioniert auch. Es geht alle Excel-Dateien im Zielpfad duch und gibt mir definierte Felder wieder. Somit habe ich aus vielen Einzeldateien dann eine Gesamtdatei/ -liste.
Nun hab ich 2 Fragen an euch:
1. Die auszulesenden Dateien haben hier immer das Tabellenblatt "Vorlage" aus dem dann die Felder gezogen werden. Nun habe ich auch viele Dateien, die vielleicht Vorlage1, Übersicht, oder Tabelle1 heißen. Wie kann ich es umschreiben, dass er alle Tabellenblätter der Datei zieht und auswertet?
2. Der Ort der auszulesenden Dateien ist ein Ordner. Unterordner werden nicht einbezogen. Wie kann ich es umschreiben, dass er den Ordner und alle Unterordner mit einbezieht?
Danke euch.
Option Explicit
Public Sub ExcelDateienAuswerten()
Dim strDateiname As String
Dim strPfad As String
Dim lngZeile As Long
'Pfadangabe, in dem die zu lesenden Excel-Datei (*.xlsx) liegen
strPfad = "G:\Maßnahmen\"
'Den 1. Dateinamen holen
strDateiname = Dir(strPfad & "*.xlsx")
'Startzeile festlegen
lngZeile = 4
'Solange ein Dateiname gelesen wird
Do While Not strDateiname = ""
'Datei verarbeiten
Call TabVerarb(strPfad & strDateiname, lngZeile)
'nächsten Dateinamen holen
strDateiname = Dir()
'Zeilenzähler erhöhen
lngZeile = lngZeile + 1
Loop
End Sub
Public Sub TabVerarb(strPfad As String, lngZeile As Long)
Dim strMeSH As String
Dim strDatei As String
Dim strSH As String
'Dateinamen extrahieren
strDatei = Split(strPfad, "\")(UBound(Split(strPfad, "\")))
'Eigenen Namen merken
strMeSH = ActiveWorkbook.Name
'Datei öffnen
Workbooks.Open Filename:=strPfad
With Workbooks(strMeSH)
'Dateinamen und auszuwertenden Zellen übertragen
.Sheets("Tabelle1").Cells(lngZeile, 1) = strDatei
.Sheets("Tabelle1").Cells(lngZeile, 2) = Workbooks(strDatei).Sheets("Vorlage").Range("G4").Value
.Sheets("Tabelle1").Cells(lngZeile, 3) = Workbooks(strDatei).Sheets("Vorlage").Range("B4").Value
.Sheets("Tabelle1").Cells(lngZeile, 4) = Workbooks(strDatei).Sheets("Vorlage").Range("G7").Value
.Sheets("Tabelle1").Cells(lngZeile, 5) = Workbooks(strDatei).Sheets("Vorlage").Range("B2").Value
.Sheets("Tabelle1").Cells(lngZeile, 6) = Workbooks(strDatei).Sheets("Vorlage").Range("B28").Value
.Sheets("Tabelle1").Cells(lngZeile, 7) = Workbooks(strDatei).Sheets("Vorlage").Range("G28").Value
.Sheets("Tabelle1").Cells(lngZeile, 8) = Workbooks(strDatei).Sheets("Vorlage").Range("B45").Value
.Sheets("Tabelle1").Cells(lngZeile, 9) = Workbooks(strDatei).Sheets("Vorlage").Range("B49").Value
.Sheets("Tabelle1").Cells(lngZeile, 10) = Workbooks(strDatei).Sheets("Vorlage").Range("C45").Value
.Sheets("Tabelle1").Cells(lngZeile, 11) = Workbooks(strDatei).Sheets("Vorlage").Range("C49").Value
.Sheets("Tabelle1").Cells(lngZeile, 12) = Workbooks(strDatei).Sheets("Vorlage").Range("D45").Value
.Sheets("Tabelle1").Cells(lngZeile, 13) = Workbooks(strDatei).Sheets("Vorlage").Range("E45").Value
.Sheets("Tabelle1").Cells(lngZeile, 14) = Workbooks(strDatei).Sheets("Vorlage").Range("E49").Value
.Sheets("Tabelle1").Cells(lngZeile, 15) = Workbooks(strDatei).Sheets("Vorlage").Range("F45").Value
.Sheets("Tabelle1").Cells(lngZeile, 16) = Workbooks(strDatei).Sheets("Vorlage").Range("F49").Value
.Sheets("Tabelle1").Cells(lngZeile, 17) = Workbooks(strDatei).Sheets("Vorlage").Range("G45").Value
.Sheets("Tabelle1").Cells(lngZeile, 18) = Workbooks(strDatei).Sheets("Vorlage").Range("G49").Value
.Sheets("Tabelle1").Cells(lngZeile, 19) = Workbooks(strDatei).Sheets("Vorlage").Range("H45").Value
.Sheets("Tabelle1").Cells(lngZeile, 20) = Workbooks(strDatei).Sheets("Vorlage").Range("H49").Value
End With
'Quelldatei schließen
Workbooks(strDatei).Saved = True
Workbooks(strDatei).Close
End Sub