Anzeige
Archiv - Navigation
1848to1852
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

Viele Excel Tabellen auslesen

Viele Excel Tabellen auslesen
15.10.2021 09:29:50
Joachim
Liebe VBA Profis,
nach langem Durchstöbern vieler Foren und Berichte bin ich nun leider doch gezwungen Hilfe in Anspruch zu nehmen.
Ich habe eine riesige Ordnerstruktur mit Kunden (Anfangsbuchstaben, Kunden, Unterordner usw.) und bei jedem Kunden gibt es ein Excel wo zum Abschluss des Projektes quasi eine Kostenrechnung vorliegt - Deckungsbeitrag.
Ich habe mir eine Batchdatei gemacht, die alle diese Excel (gleicher Aufbau, nur ein Tabellenblatt) aus dieser Struktur ermittelt und in einen eigenen Ordner kopiert.
Da liegen dann +1000 Excel drinnen und ich würde jetzt gerne diese Daten ins POWER BI holen.
Dazu würde ich gerne wöchentlich jedes Excel automatisch öffnen und bestimmte Zellwerte in eine "Masterarbeitsmappe" für den Export schreiben.
D.h. aus jedem Quell Exceltabellenblatt würde ich gerne einen Zeile mit ca. 10 Spalten im Masterexcel machen.
Hat von Euch jemand so etwas schon programmiert?
Pfade des Quellexcelordners und der Zieldatei kann auch hart im Coding stehen - kein Eingabefeld nötig.
Die Schleife für das Öffnen (ein Excel nach dem Anderen, Werte von x nach x übernehmen, wieder schließen, nächstes Excel) ist für mich nach einigen Versuchen leider nicht hinzubekommen. (habe auch keine Erfahrung sondern nur versucht aus diversen Quellen mir etwas "zusammenzustoppeln"
Wenn ich ein Muster hätte Zelle x nach Zelle x wäre ich sehr dankbar dafür.
Vielen Dank für Eure Unterstützung
Liebe Grüße Joachim

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Viele Excel Tabellen auslesen
15.10.2021 10:11:36
Werner
Hallo,
teste mal:

Public Sub Alle_Dateien()
Dim strDatei As String, wbQuelle As Workbook, wsZiel As Worksheet
'Pfad zu den Quelldateien anpassen, Backslash am Ende nicht vergessen
Const FILE_PATH As String = "C:\Eigene Dateien\"
Set wsZiel = ThisWorkbook.Worksheets("DeinZielblatt")
strDatei = Dir$(FILE_PATH & "*.xlsx")
Application.ScreenUpdating = False
Do Until strDatei = ""
Set wbQuelle = Workbooks.Open(Filename:=FILE_PATH & strDatei)
'Quellblatt und Zielblatt anpassen
'Kopierbereich anpassen
wbQuelle.Sheets(1).Range("D1").EntireRow.Copy _
ThisWorkbook.Worksheets("Zielblatt").Cells(Cells(Rows.Count, "A").End(xlUp).Offset(1).Row, "A")
wbQuelle.Close False
strDatei = Dir$
Loop
Set wsZiel = Nothing: Set wbQuelle = Nothing
End Sub
Gruß Werner
Anzeige
AW: Viele Excel Tabellen auslesen
18.10.2021 07:34:33
Joachim
Hallo Werner,
besten Dank für Deine Unterstützung.
Ich habe mal in einem Ordner 15 Beispielexceltabellen gespeichert und getest.
Die Schleife durchläuft auch die Exceldateien aber der Kopierprozess dürfte nicht funktionieren.
Nach dem Durchlauf steht in der Zielexcel nur in Zeile 42 und 43 in Spalte A und B der Name von von zwei Quellen (Quellzelle B2 mit der ich teste)
Sonst ist das Excel leer. (habe auch vorher im Zielexcel sicherheitshalber die ersten hundert "leeren" Zeilen gelöscht damit keine versteckten Inhalte drinnen sind.
Besten Dank für Deine Hilfe
LG
Joachim

Public Sub Alle_Dateien()
Dim strDatei As String, wbQuelle As Workbook, wsZiel As Worksheet
'Pfad zu den Quelldateien anpassen, Backslash am Ende nicht vergessen
Const FILE_PATH As String = "\\server\home\j.baader\TestLaufzettelA\"
Set wsZiel = ThisWorkbook.Worksheets("Tabelle1")
strDatei = Dir$(FILE_PATH & "*.xlsx")
Application.ScreenUpdating = False
Do Until strDatei = ""
Set wbQuelle = Workbooks.Open(Filename:=FILE_PATH & strDatei)
'Quellblatt und Zielblatt anpassen
'Kopierbereich anpassen
wbQuelle.Sheets(1).Range("B2").EntireRow.Copy _
ThisWorkbook.Worksheets("Tabelle1").Cells(Cells(Rows.Count, "A").End(xlUp).Offset(1).Row, "A")
wbQuelle.Close False
strDatei = Dir$
Loop
Set wsZiel = Nothing: Set wbQuelle = Nothing
End Sub

Anzeige
AW: Viele Excel Tabellen auslesen
18.10.2021 09:29:29
Werner
Hallo,
fataler Fehler von mir.
Diese Codezeile löschen:

ThisWorkbook.Worksheets("Tabelle1").Cells(Cells(Rows.Count, "A").End(xlUp).Offset(1).Row, "A")
Und durch die ersetzen:

wsZiel.Cells(wsZiel.Cells(Rows.Count, "A").End(xlUp).Offset(1).Row, "A")
Gruß Werner
AW: Viele Excel Tabellen auslesen
20.10.2021 08:41:08
Joachim
Hallo Werner,
danke für Deine Unterstützung.
Die Schleife funktioniert jetzt und alle Exceldateien werden durchlaufen.
Wie kann ich jetzt die Kopierfunktion anpassen`
Derzeit wird anscheinend alles, was in meiner angegeben Quellezelle "B2" steht, als Zeile ins Ziel Excel kopiert.
In meinem Fall die Bezeichnung Name und der "Name"
Ich würde aber gerne verschiedene Zellen des Quellsheets z.B. B2 (Name), dann B3, dann C5 usw. in die selbe Zeile, aber in eine neue Spalte bekommen.
Erst wenn alle gewünschten Zellen kopiert sind, soll das nächste Excel ausgelesen werden und eine neue Zeile im Zielexcel begonnen werden.
Also wenn Du das noch hinbekommen würdest, wäre dies großartig.
Vielen Dank
Liebe Grüße Joachim
Anzeige
AW: Viele Excel Tabellen auslesen
20.10.2021 21:05:04
Yal
Hallo Joachim,
Werner ist wohl länger offline.

Public Sub Alle_Dateien()
Dim strDatei As String
Dim wbQuelle As Workbook
Dim wsZiel As Worksheet
Dim AktZeile As Long
'Pfad zu den Quelldateien anpassen, Backslash am Ende nicht vergessen
Const FILE_PATH As String = "\\server\home\j.baader\TestLaufzettelA\"
Set wsZiel = ThisWorkbook.Worksheets("Tabelle1")
strDatei = Dir$(FILE_PATH & "*.xlsx")
Application.ScreenUpdating = False
Do Until strDatei = ""
AktZeile = wsZiel.Cells(Rows.Count, "A").End(xlUp).Offset(1).Row
Set wbQuelle = Workbooks.Open(Filename:=FILE_PATH & strDatei)
'Quellblatt und Zielblatt anpassen
'Kopierbereich anpassen
wbQuelle.Sheets(1).Range("B2").Copy
wsZiel.Range("A" & AktZeile).PasteSpecial xlPasteValues
wbQuelle.Close False
strDatei = Dir$
Loop
Set wsZiel = Nothing: Set wbQuelle = Nothing
Application.ScreenUpdating = True
End Sub
In dem Block zwischen '---- ist das Lesen (hier B2) und Ablegen (hier Ax) der einzelne Wert. Dieses Block musst Du duplizieren und anpassen. x ist die aktuelle Zeile.
B2 zu Ax:
wbQuelle.Sheets(1).Range("B2").Copy
wsZiel.Range("A" & AktZeile).PasteSpecial xlPasteValues
C3 zu Bx:
wbQuelle.Sheets(1).Range("C3").Copy
wsZiel.Range("B" & AktZeile).PasteSpecial xlPasteValues
.. zu Cx usw
Stelle aber sicher, dass die Zelle, die in Spalte A abgelegt wird, IMMER befüllt ist. Sonst wird die nächste Zeile nicht richtig ermittelt und es geht schief.
Ich habe auf PasteSpecial xlPasteValues umgestellt, weil, wenn die Quelle eine Formel beinhaltet, will man den Wert und nicht die Formel (die dann in der Zieldatei nicht funktioniert).
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige