Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bestimmte Zellen aus mehreren Dateien auslesen

Forumthread: Bestimmte Zellen aus mehreren Dateien auslesen

Bestimmte Zellen aus mehreren Dateien auslesen
11.03.2019 13:31:02
JP
Hallo zusammen,
ich benötige Hilfe beim Erstellen eines Makros welches mir aus Excel Dateien die sich in einem Ordner befinden bestimmte Zellen ausliest und in einen neuen Blatt überträgt.
Ich habe bei meiner Recherge folgenen Artikel gefunden, was meinem Anliegen schon sehr nahe kommt:
https://www.herber.de/forum/archiv/1128to1132/1129032_Bestimmte_Zeilen_aus_mehreren_Dateien_auslesen.html
Die Excel Dateien sind alle gleich aufgebaut. Folgene Zellen sollen aus der Datei ausgelesen werden:
D1
B8
B12
C18-C29
Userbild
Ich wäre Euch sehr dankbar, wenn ihr mir dabei behilflich sein könntet.
Gruß
JP
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Zellen aus mehreren Dateien auslesen
11.03.2019 16:26:58
Rob
Hi JP,
die Excel-Dateien lassen sich mit der Klasse FileSystemObjects durchschleifen. Anschließend kannst Du die Zellen in ein neues Arbeitsblatt/Worksheet mit der Transfer-Methode oder Copy Paste zusammenfassen. Wie ist das neue Arbeitsblatt eigentlich aufgebaut?
Grüße,
Rob
AW: teilweise getestet
11.03.2019 16:59:04
Fennek
Hallo,
speichere den Code im "Ziel-Workbook" im Ordner der Quelldateien:

Sub JP()
Dim WB As Workbook
Dim RNG As Range
Pt = ThisWorkbook.Path
f = Dir(Pt & "\*.xlsx")
Do While Len(f)
r = r + 1
Set WB = GetObject(Pt & f)
Set RNG = WB.Sheets(1).Range("D1, B8, C18:C29")
Cells(r, 1) = RNG.Areas(1)
Cells(r, 2) = RNG.Areas(2)
Cells(r, 3).Resize(, 12) = Application.Transpose(RNG.Areas(3).Value)
wb.close 0
f = Dir
Loop
End Sub
mfg
Anzeige
AW: teilweise getestet
12.03.2019 10:36:59
JP
Vielen Dank für die schnelle Antwort.
Leider funktioniert der Code nicht bei mir.
Die Dateien sind im .xld Format so habe ich "f = Dir(Pt & "\*.xl*")" geändert.
Nun bekomme ich allerdings folgene Fehlermeldung:
Userbild
Das neue Datenblatt sollte wie folgt aussehen:
Userbild
Anzeige
AW: "XLD"? over & out
12.03.2019 10:54:25
Fennek
Hallo,
vom "XLD"-Format habe ich noch nie gehört:
http://dotwhat.net/file/extension/xld/82
Aber wer solche relevanten Infos nicht im ersten Post nennt, landet auf meiner Ignore-Liste.
mfg
AW: "XLD"? over & out
12.03.2019 11:03:57
JP
Hallo fennek,
ich möchte dir trotzallerdem für deine Hilfe danken.
Das diese Information von größerer Bedeutung ist, war mir nicht bewusst, da es ja ein altes excel-datenformat zu sein scheint, sprich Abwärtskompatibilität.
Ich habe die Datei auch vom .xld zu einer .xlsx umgewandelt, selber Fehler.
Gruß
JP
Anzeige
AW: "Pf": welcher Inhalt?
12.03.2019 11:31:09
Fennek
AW: "Pf": welcher Inhalt?
12.03.2019 11:48:10
JP
Anbei der komplette Inhalt der Datei:
(Gelb gemarkert sind die auszulesenen Zellen)
Userbild
AW: "Pf": welcher Inhalt? (die II.)
12.03.2019 11:52:26
Fennek
Die Frage war, welchen Inhalt die Variable Pf in der Zeile "f = dir(Pf & "\xl?") hat.
Es sollte der Pfad ohne "\" mit den xld/xlsx Dateien sein.
Wenn der Debugger anspringt, klicke NICHT auf beenden, sondern auf "debugging" und stelle den Mauszeiger über "Pf".
Anzeige
AW: "Pf": welcher Inhalt? (die II.)
12.03.2019 12:09:43
JP
In dem Code war Pt statt Pf angegeben. Durch die Änderung zu

Pf = ThisWorkbook.Path
f = Dir(Pf & "\*.xl*")
Do While Len(f)
habe ich nun den Pfad zum Verzeichnis.
Nächster Schritt im debugger gibt den vorher genannten Fehler.
Hier nochmal der komplette Code:
Sub JP()
Dim WB As Workbook
Dim RNG As Range
Pf = ThisWorkbook.Path
f = Dir(Pf & "\*.xl*")
Do While Len(f)
r = r + 1
Set WB = GetObject(Pf & f)
    Set RNG = WB.Sheets(1).Range("D1, B8, C18:C29")
Cells(r, 1) = RNG.Areas(1)
Cells(r, 2) = RNG.Areas(2)
Cells(r, 3).Resize(, 12) = Application.Transpose(RNG.Areas(3).Value)
WB.Close 0
f = Dir
Loop
End Sub

Anzeige
AW: GetObject
12.03.2019 12:15:34
Fennek
"GetObject" wird genutzt um das Quell-Workbook unsichtbar zu öffnen. Zum debuggen ersetze es durch "set WB = workbooks.Open(Pf & f)"
AW: GetObject
12.03.2019 12:33:36
PeterK
Hallo
GetObject(Pf & f) benutzt einen falschen "Dateinamen", sollte wohl heißen: GetObject(Pf & "\" & f)
;
Anzeige
Anzeige

Infobox / Tutorial

Bestimmte Zellen aus mehreren Excel-Dateien auslesen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle ein neues Arbeitsblatt, in das die Daten übertragen werden sollen.

  2. Drücke Alt + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Rechtsklick auf "VBAProject (deine Datei)" > Einfügen > Modul.
  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub JP()
       Dim WB As Workbook
       Dim RNG As Range
       Dim Pf As String
       Dim f As String
       Dim r As Integer
       Pf = ThisWorkbook.Path
       f = Dir(Pf & "\*.xl*") ' Hier kannst du .xls oder .xlsx verwenden
       r = 1
       Do While Len(f) > 0
           Set WB = Workbooks.Open(Pf & "\" & f)
           Set RNG = WB.Sheets(1).Range("D1, B8, C18:C29")
           Cells(r, 1) = RNG.Areas(1)
           Cells(r, 2) = RNG.Areas(2)
           Cells(r, 3).Resize(, 12) = Application.Transpose(RNG.Areas(3).Value)
           WB.Close SaveChanges:=False
           r = r + 1
           f = Dir
       Loop
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Führe das Makro aus:

    • Drücke Alt + F8, wähle JP und klicke auf "Ausführen".

Häufige Fehler und Lösungen

  • Fehler: "Datei nicht gefunden"

    • Stelle sicher, dass der Pfad zu den Quelldateien korrekt ist. Überprüfe, ob die Dateien tatsächlich im angegebenen Ordner vorhanden sind.
  • Fehler: "GetObject" funktioniert nicht

    • Ersetze Set WB = GetObject(Pf & f) durch Set WB = Workbooks.Open(Pf & "\" & f).
  • Fehler: Ungültiger Zellbereich

    • Überprüfe, ob die angegebenen Zellen (D1, B8, C18:C29) in den Quelldateien vorhanden sind.

Alternative Methoden

Wenn Du eine andere Vorgehensweise ausprobieren möchtest, kannst Du auch Power Query verwenden, um Daten aus mehreren Excel-Dateien zu konsolidieren. Dies kann einfach über die Benutzeroberfläche erfolgen und benötigt kein VBA.

  1. Gehe zu "Daten" > "Daten abrufen" > "Aus Datei" > "Aus Ordner".
  2. Wähle den Ordner aus, in dem sich die Excel-Dateien befinden.
  3. Wähle die Dateien aus und lade sie in Excel.

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du den oben genannten VBA-Code anpassen kannst, um nur .xlsx-Dateien zu lesen:

f = Dir(Pf & "\*.xlsx")

Wenn Du stattdessen .xls-Dateien auslesen möchtest, ändere den Filter entsprechend:

f = Dir(Pf & "\*.xls")

Tipps für Profis

  • Fehlerbehebung: Nutze die Debugging-Funktion in VBA, um Fehler zu identifizieren. Klicke bei einem Fehler auf "Debuggen" und untersuche die Variablen.
  • Automatisierung: Du kannst das Makro so anpassen, dass es automatisch bei Öffnung der Arbeitsmappe ausgeführt wird.
  • Speichern der Ergebnisse: Überlege, wie Du die Ergebnisse speichern möchtest, z. B. in einer neuen Datei oder in einer Datenbank.

FAQ: Häufige Fragen

1. Kann ich auch .xls-Dateien lesen? Ja, der Code kann leicht angepasst werden, um .xls-Dateien zu lesen, indem Du den Dateifilter änderst.

2. Wie viele Dateien kann ich gleichzeitig verarbeiten? Das Makro verarbeitet alle Dateien im angegebenen Ordner, solange sie dem angegebenen Format entsprechen.

3. Was tun, wenn ich eine Fehlermeldung erhalte? Überprüfe den Code auf Tippfehler und stelle sicher, dass die Quelldateien im richtigen Format vorliegen. Nutze die Debugging-Funktion zur Fehlersuche.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige