Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1724to1728
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

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

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?
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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige