Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten aktualisieren für mehrere Dateien

Forumthread: Daten aktualisieren für mehrere Dateien

Daten aktualisieren für mehrere Dateien
03.12.2019 13:34:09
Robert
Hallo,
ich habe ein Makro welches auch funktioniert jedoch nur für eine einzelne Datei. Ich benötige diesen Ablauf aber für mehrere Dateien. Gut wäre wenn ich den Pfad und den Dateinamen der Dateien in einem Worksheet angeben kann und er geht dann Datei für Datei durch. Kann mir jemand sagen, wie der Code dazu aussehen müsste?
Hier mein Makro:
Sub DatenAktualisierung()
Application.EnableEvents = False
Application.DisplayAlerts = False
Workbooks.Open "C:\test.xlsm"
ActiveWorkbook.RefreshAll
Do
DoEvents
Loop Until Application.CalculationState = xlDone
Workbooks("test.xlsm").Save
Workbooks("test.xlsm").Close
Application.DisplayAlerts = True
Application.EnableEvents = True
MsgBox ("Aktualisierug erfolgt")
End Sub

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aktualisieren für mehrere Dateien
03.12.2019 13:44:46
Werner
Hallo Robert,
da du nicht verraten hast, in welcher Zelle im Blatt dein Pfad steht und wo deine Dateinamen sthen, mußt du das noch entsprechend anpassen.
Teste mal:
Sub DatenAktualisierung()
Dim strPath As String, strDatei As String
Dim loLetzte As Long, i As Long
Application.EnableEvents = False
Application.DisplayAlerts = False
'Blattname anpassen
With Worksheets("Tabelle1")
'Pfad in Zelle A1 mit Slash am Ende
'Zelle anpassen
strPath = .Range("A1")
'Dateinamen (mit Dateiendung) in Spalte B, ab B1
'an deine Verhältnisse anpassen
loLetzte = .Cells(.Rows.Count, "B").End(xlUp).Row
For i = 1 To loLetzte
Workbooks.Open strPath & strDatei
ActiveWorkbook.RefreshAll
Do
DoEvents
Loop Until Application.CalculationState = xlDone
Workbooks(strDatei).Close True
Next i
End With
Application.DisplayAlerts = True
Application.EnableEvents = True
MsgBox ("Aktualisierug erfolgt")
End Sub
Gruß Werner
Anzeige
entscheidender Fehler im vorherigen Code..
03.12.2019 13:59:17
Werner
Hallo Robert,
...ich hatte die Variable strDatei gar nicht befüllt.
Zudem jetzt in diesem Code jetzt noch mit Fehlerbehandlung, falls die Datei nicht vorhanden ist.
Sub DatenAktualisierung()
Dim strPath As String, strDatei As String
Dim loLetzte As Long, i As Long, wbAktualisierung As Workbook
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayAlerts = False
'Blattname anpassen
With Worksheets("Tabelle1")
'Pfad in Zelle A1 mit Slash am Ende
'Zelle anpassen
strPath = .Range("A1")
'Dateinamen (mit Dateiendung) in Spalte B, ab B1
'an deine Verhältnisse anpassen
loLetzte = .Cells(.Rows.Count, "B").End(xlUp).Row
For i = 1 To loLetzte
strDatei = .Cells(i, 2)
On Error Resume Next
Set wbAktualisierung = Workbooks.Open(strPath & strDatei)
If Not wbAktualisierung Is Nothing Then
ActiveWorkbook.RefreshAll
Do
DoEvents
Loop Until Application.CalculationState = xlDone
wbAktualisierung.Close True
End If
On Error GoTo -1
Next i
End With
Set wbAktualisierung = Nothing
Application.DisplayAlerts = True
Application.EnableEvents = True
MsgBox ("Aktualisierug erfolgt")
End Sub
Gruß Werner
Anzeige
AW: entscheidender Fehler im vorherigen Code..
03.12.2019 15:20:34
Robert
Hallo Werner,
das ist genau so wie ich meinte. Läuft sensationell! Vielen Dank dafür.
Was die Fehlerbehandlung angeht daran hab ich gar nicht gedacht.
Leider funktioniert Sie aber offenbar nicht. Wenn eine Datei fehlt, gibt es keinen Hinweis.
Habe ich da was übersehen oder muss ich was ergänzen?
Anzeige
AW: entscheidender Fehler im vorherigen Code..
03.12.2019 15:32:33
Werner
Hallo Robert,
da kann auch keine Meldung kommen, weil ich da nichts entsprechendes in den Code eingebaut habe.
Wenn du das willst, dann kann man einfach noch eine Messagebox einbauen.
Sub DatenAktualisierung()
Dim strPath As String, strDatei As String
Dim loLetzte As Long, i As Long, wbAktualisierung As Workbook
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayAlerts = False
'Blattname anpassen
With Worksheets("Tabelle1")
'Pfad in Zelle A1 mit Slash am Ende
'Zelle anpassen
strPath = .Range("A1")
'Dateinamen (mit Dateiendung) in Spalte B, ab B1
'an deine Verhältnisse anpassen
loLetzte = .Cells(.Rows.Count, "B").End(xlUp).Row
For i = 1 To loLetzte
strDatei = .Cells(i, 2)
On Error Resume Next
Set wbAktualisierung = Workbooks.Open(strPath & strDatei)
If Not wbAktualisierung Is Nothing Then
ActiveWorkbook.RefreshAll
Do
DoEvents
Loop Until Application.CalculationState = xlDone
wbAktualisierung.Close True
End If
On Error GoTo -1
MsgBox "Fehler: Die Datei " & strDatei & " konnte nicht gefunden werden."
Next i
End With
Set wbAktualisierung = Nothing
Application.DisplayAlerts = True
Application.EnableEvents = True
MsgBox ("Aktualisierug erfolgt")
End Sub
Gruß Werner
Anzeige
;
Anzeige

Infobox / Tutorial

Daten aktualisieren für mehrere Dateien in Excel


Schritt-für-Schritt-Anleitung

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

  1. Öffne Excel und erstelle ein neues Arbeitsblatt.
  2. Gib in Zelle A1 den Pfad zu den Dateien ein (z.B. C:\DeineDateien\).
  3. Gib in Spalte B ab B1 die Dateinamen ein (z.B. test1.xlsm, test2.xlsm).
  4. Öffne den VBA-Editor mit ALT + F11.
  5. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (deineDatei)", dann "Einfügen" -> "Modul".
  6. Kopiere den folgenden Code in das Modul:
Sub DatenAktualisierung()
    Dim strPath As String, strDatei As String
    Dim loLetzte As Long, i As Long, wbAktualisierung As Workbook
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.DisplayAlerts = False

    With Worksheets("Tabelle1")
        strPath = .Range("A1")
        loLetzte = .Cells(.Rows.Count, "B").End(xlUp).Row
        For i = 1 To loLetzte
            strDatei = .Cells(i, 2)
            On Error Resume Next
            Set wbAktualisierung = Workbooks.Open(strPath & strDatei)
            If Not wbAktualisierung Is Nothing Then
                ActiveWorkbook.RefreshAll
                Do
                    DoEvents
                Loop Until Application.CalculationState = xlDone
                wbAktualisierung.Close True
            End If
            On Error GoTo -1
        Next i
    End With

    Application.DisplayAlerts = True
    Application.EnableEvents = True
    MsgBox ("Aktualisierung erfolgt")
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus.

Häufige Fehler und Lösungen

  • Fehler beim Öffnen der Datei: Stelle sicher, dass der Pfad in Zelle A1 korrekt ist und dass die Dateinamen in Spalte B die richtige Endung haben.
  • Keine Rückmeldung bei fehlenden Dateien: Um eine Warnung zu erhalten, wenn eine Datei nicht gefunden wird, kannst du den Code wie folgt anpassen:
MsgBox "Fehler: Die Datei " & strDatei & " konnte nicht gefunden werden."

Füge diese Zeile nach On Error GoTo -1 in der Schleife hinzu, um eine Meldung zu erhalten.


Alternative Methoden

Neben VBA kannst du auch Power Query verwenden, um Daten aus mehreren Dateien zu kombinieren und zu aktualisieren. Hier sind die Schritte:

  1. Öffne Excel und gehe zu "Daten".
  2. Wähle "Daten abrufen" -> "Aus Datei" -> "Aus Ordner".
  3. Wähle den Ordner mit deinen Excel-Dateien.
  4. Wähle die gewünschten Dateien aus und lade die Daten in Excel.

Praktische Beispiele

Beispiel für den Code, um Daten aus zwei Dateien zu aktualisieren:

Sub BeispielDatenAktualisierung()
    ' Pfad und Dateinamen anpassen
    Dim strPath As String
    strPath = "C:\DeineDateien\"

    Dim dateien As Variant
    dateien = Array("test1.xlsm", "test2.xlsm")

    Dim i As Integer
    For i = LBound(dateien) To UBound(dateien)
        Workbooks.Open strPath & dateien(i)
        ActiveWorkbook.RefreshAll
        ActiveWorkbook.Close True
    Next i
End Sub

Tipps für Profis

  • Fehlerbehandlung: Verwende On Error Resume Next, um den Code nicht bei einem Fehler zu stoppen. Achte aber darauf, dass du Fehler richtig behandelst.
  • Optimierung der Berechnungen: Setze Application.Calculation = xlManual vor der Datenaktualisierung, um unnötige Berechnungen während des Öffnens der Dateien zu vermeiden.
  • Batch-Verarbeitung: Wenn du viele Dateien hast, nutze Schleifen, um die Verarbeitung zu optimieren und die Ausführung zu beschleunigen.

FAQ: Häufige Fragen

1. Frage
Wie kann ich die Datenaktualisierung für eine bestimmte Datei automatisieren?
Antwort: Du kannst den Dateinamen direkt im Code angeben und die Schleife weglassen.

2. Frage
Funktioniert das auch in Excel 365?
Antwort: Ja, das VBA-Makro funktioniert in Excel 365 und anderen Versionen von Excel, die VBA unterstützen.

3. Frage
Kann ich das Makro für andere Dateiformate verwenden?
Antwort: Ja, du kannst das Makro anpassen, um auch andere Formate wie .csv oder .xls zu verarbeiten, indem du die Dateiendungen entsprechend anpasst.

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