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

Dateien öffnen Werte auslesen

Forumthread: Dateien öffnen Werte auslesen

Dateien öffnen Werte auslesen
01.07.2008 11:38:46
Andre´
Hallo alle zusammen,
ich möchte die Zellwerte aus allen Excel Dateien die sich unter C:\ befinden auslesen.
Es handelt sich nur um die Zellen A1, B2 und B3 der Tabelle1 die in eine neue Arbeitsmappe eingelesen werden sollen.
Die nächsten Werte sollen jeweils angehängt werden.
Wie kann ich dies realiesieren.
Vielen Dank im Voraus!
MFG Andre

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Dateien öffnen Werte auslesen
01.07.2008 11:57:40
UweD
Hallo
ich hab mal ein bestehendes Makro abgeändert:


Option Explicit
Sub alle_Dateien_Verzeichnis() '
    Dim dlg As FileDialog
    Dim Si, Ext$, Datei$
    Dim TB1, TB2, LR&
    Set dlg = Application.FileDialog(msoFileDialogFolderPicker) 'Verzeichnis wählen
    If dlg.Show = True Then
        For Each Si In dlg.SelectedItems 'Die Abfrage für den selektierten Eintrag
            Ext = "*.xls"       'Dateiextension ggf. anpassen
            Datei = Dir(Si & "\" & Ext)
            Do
                Workbooks.Open Filename:=Si & "\" & Datei
                'mach was damit
                Set TB1 = ThisWorkbook.Sheets("Tabelle1"'Neue Tabelle dieser Datei
                Set TB2 = ActiveWorkbook.Sheets("Tabelle1"'Tabelle aus der gelesen wird
                LR = TB1.Cells(Rows.Count, 1).End(xlUp).Row + 1 'letzte Zeile der Spalte+1
                TB1.Cells(LR, 1) = TB2.Range("A1"'hier hinten sind die Zielzellen
                TB1.Cells(LR, 2) = TB2.Range("B2"'"
                TB1.Cells(LR, 3) = TB2.Range("B3"'"
                'Ende mach was
                Workbooks(Datei).Close SaveChanges:=False
                Datei = Dir() ' wählt die nächste Datei
            Loop While Len(Datei) > 0
        Next
    End If
End Sub


unklar ist mir, ob die 3 Werte, die ja aus unterschiedlichen Zeilen kommen, auch wieder in unterschiedliche Zeilen sollen?
Ich hab es jetzt so gemacht, das die Zahlenpaare in einer Zeile angefügt werden.
Gruß UweD

Anzeige
AW: Dateien öffnen Werte auslesen
01.07.2008 12:31:00
Andre´
Hallo Uwe,
vielen DANK für die Meldung. Genau das habe ich gesucht :-))
MFG Andre

AW: Dateien öffnen Werte auslesen
01.07.2008 16:17:00
Andre´
Hallo Uwe,
habe gerade festgestellt, dass es ein Problem gibt wenn ein Ordner ausgewählt wurde wo keine Dateien enthalten sind.
Code bleibt bei folgender Zeile hängen
Workbooks.Open Filename:=Si & "\" & Datei
und bringt Laufzeitfehler 1004
Hast Du eine Idee wie man das abfangen kann.
MFG Andre

Anzeige
AW: Dateien öffnen Werte auslesen
01.07.2008 16:36:05
UweD
Hallo
ja geht.
Ich habe das

"While Len(Datei) > 0"

and den Anfang der Loop- Schleife gesetzt...


Option Explicit
Sub alle_Dateien_Verzeichnis() '
    Dim dlg As FileDialog
    Dim Si, Ext$, Datei$
    Dim TB1, TB2, LR&
    Set dlg = Application.FileDialog(msoFileDialogFolderPicker) 'Verzeichnis wählen
    If dlg.Show = True Then
        For Each Si In dlg.SelectedItems 'Die Abfrage für den selektierten Eintrag
            Ext = "*.xls"       'Dateiextension ggf. anpassen
            Datei = Dir(Si & "\" & Ext)
            Do While Len(Datei) > 0
                Workbooks.Open Filename:=Si & "\" & Datei
                'mach was damit
                Set TB1 = ThisWorkbook.Sheets("Tabelle1"'Neue Tabelle dieser Datei
                Set TB2 = ActiveWorkbook.Sheets("Tabelle1"'Tabelle aus der gelesen wird
                LR = TB1.Cells(Rows.Count, 1).End(xlUp).Row + 1 'letzte Zeile der Spalte+1
                TB1.Cells(LR, 1) = TB2.Range("A1"'hier hinten sind die Zielzellen
                TB1.Cells(LR, 2) = TB2.Range("B2"'"
                TB1.Cells(LR, 3) = TB2.Range("B3"'"
                'Ende mach was
                Workbooks(Datei).Close SaveChanges:=False
                Datei = Dir() ' wählt die nächste Datei
            Loop
        Next
    End If
End Sub


Anzeige
Besten Dank:-)) owt.
01.07.2008 16:47:00
Andre´
;
Anzeige
Anzeige

Infobox / Tutorial

Zellwerte aus Excel-Dateien auslesen


Schritt-für-Schritt-Anleitung

Um Zellwerte aus mehreren Excel-Dateien auszulesen, kannst du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, wie du dies umsetzen kannst:

  1. Öffne Excel und erstelle eine neue Arbeitsmappe.

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

  3. Füge ein neues Modul hinzu:

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

    Option Explicit
    Sub alle_Dateien_Verzeichnis()
       Dim dlg As FileDialog
       Dim Si As Variant, Ext As String, Datei As String
       Dim TB1 As Worksheet, TB2 As Worksheet, LR As Long
    
       Set dlg = Application.FileDialog(msoFileDialogFolderPicker) ' Verzeichnis wählen
       If dlg.Show = True Then
           For Each Si In dlg.SelectedItems ' Die Abfrage für den selektierten Eintrag
               Ext = "*.xls" ' Dateiextension ggf. anpassen
               Datei = Dir(Si & "\" & Ext)
               Do While Len(Datei) > 0
                   Workbooks.Open Filename:=Si & "\" & Datei
                   Set TB1 = ThisWorkbook.Sheets("Tabelle1") ' Neue Tabelle dieser Datei
                   Set TB2 = ActiveWorkbook.Sheets("Tabelle1") ' Tabelle aus der gelesen wird
                   LR = TB1.Cells(Rows.Count, 1).End(xlUp).Row + 1 ' letzte Zeile der Spalte + 1
                   TB1.Cells(LR, 1) = TB2.Range("A1") ' hier hinten sind die Zielzellen
                   TB1.Cells(LR, 2) = TB2.Range("B2")
                   TB1.Cells(LR, 3) = TB2.Range("B3")
                   Workbooks(Datei).Close SaveChanges:=False
                   Datei = Dir() ' wählt die nächste Datei
               Loop
           Next
       End If
    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 alle_Dateien_Verzeichnis aus und klicke auf "Ausführen".

Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dieser Fehler tritt auf, wenn der Code versucht, eine Datei zu öffnen, die nicht existiert. Um dies zu verhindern, stelle sicher, dass du nur Ordner auswählst, die tatsächlich Excel-Dateien enthalten. Du kannst dies im Code mit einer Bedingung abfangen, die überprüft, ob Datei leer ist, bevor du Workbooks.Open ausführst.

    Do While Len(Datei) > 0
       If Len(Datei) > 0 Then
           Workbooks.Open Filename:=Si & "\" & Datei
       End If
    Loop

Alternative Methoden

Wenn du keine VBA-Programmierung verwenden möchtest, gibt es auch alternative Methoden, um Zellwerte aus Excel-Dateien auszulesen:

  • Power Query: Du kannst Power Query verwenden, um Daten aus mehreren Excel-Dateien zu importieren und zu transformieren.
  • Excel-Funktionen: Wenn die Daten in einem festen Format vorliegen, kannst du auch Verknüpfungen oder die Funktion INDIREKT verwenden, um Werte aus anderen Arbeitsmappen zu lesen.

Praktische Beispiele

Hier sind einige Beispiele, wie du den VBA-Code anpassen kannst:

  1. Daten aus .xlsx-Dateien lesen:

    • Ändere die Zeile Ext = "*.xls" in Ext = "*.xlsx".
  2. Werte aus anderen Zellen auslesen:

    • Wenn du andere Zellen wie C1 oder D2 auslesen möchtest, füge einfach weitere Zeilen im Code hinzu, um diese Werte zu kopieren.
    TB1.Cells(LR, 4) = TB2.Range("C1")
    TB1.Cells(LR, 5) = TB2.Range("D2")

Tipps für Profis

  • Fehlerbehandlung einfügen: Implementiere eine Fehlerbehandlung, um sicherzustellen, dass dein Makro auch bei unerwarteten Bedingungen stabil bleibt.

    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0
  • Verwende .xlsm-Dateien: Speichere deine Arbeitsmappe als .xlsm, um sicherzustellen, dass das Makro gespeichert wird.


FAQ: Häufige Fragen

1. Kann ich auch .xls-Dateien lesen? Ja, der bereitgestellte Code kann sowohl .xls- als auch .xlsx-Dateien lesen, einfach die Dateiendung im Code anpassen.

2. Wie kann ich den Code anpassen, um weitere Zellen auszulesen? Du kannst einfach zusätzliche Zeilen im Code hinzufügen, um weitere Zellen auszulesen und in die Zielarbeitsmappe zu kopieren.

3. Funktioniert das auch in Excel 365? Ja, der VBA-Code funktioniert auch in Excel 365, solange du die Makros aktiviert hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige