15.12.2021, 11:15
(Dieser Beitrag wurde zuletzt bearbeitet: 15.12.2021, 15:04 von WillWissen.
Bearbeitungsgrund: Codetags
)
Hallo zusammen,
ich erzeuge mit einem Makro eine Dateiliste in Excel.
Danach benutze ich via vba einen Code, der aus den aufgelisteten Dateien bestimmte Werte aus verschiedenen Arbeitsblättern ausliest und neben den aufgelisteten Dateinamen einträgt (in weiteren Zellen).
Das Makro funktioniert soweit fehlerfrei, allerdings dauert es eine Ewigkeit (mehr als 15 Minuten) bis die Aktion beendet ist.
Ich muss anmerken, dass es sich hier um eine Dateiliste handelt, die bis zu 4.000 Excel-Dateien umfasst.
Siehe nachfolgenden Code. Lässt sich das beschleunigen?
Vielen Dank für die Hilfe vorab! - bleibt gesund!
ich erzeuge mit einem Makro eine Dateiliste in Excel.
Danach benutze ich via vba einen Code, der aus den aufgelisteten Dateien bestimmte Werte aus verschiedenen Arbeitsblättern ausliest und neben den aufgelisteten Dateinamen einträgt (in weiteren Zellen).
Das Makro funktioniert soweit fehlerfrei, allerdings dauert es eine Ewigkeit (mehr als 15 Minuten) bis die Aktion beendet ist.
Ich muss anmerken, dass es sich hier um eine Dateiliste handelt, die bis zu 4.000 Excel-Dateien umfasst.
Siehe nachfolgenden Code. Lässt sich das beschleunigen?
Code:
Private Function GetValue(pfad, datei, blatt, zelle)
'** Daten aus geschlossener Arbeitsmappe auslesen
'*** Dimensionierung der Variablen
Dim Ausl As String
'Sicherstellen, dass das datei vorhanden ist
If Right(pfad, 1) <> "\" Then pfad = pfad & "\"
If Dir(pfad & datei) = "" Then
GetValue = "datei Not Found"
Exit Function
End If
'** Das Argument erstellen
Ausl = "'" & pfad & "[" & datei & "]" & blatt & "'!" & Range(zelle).Range("A1").Address(, , xlR1C1)
'** Auslesen über Excel4Macro
GetValue = ExecuteExcel4Macro(Ausl)
End Function
__________________________________________________________________________________
Sub Zellelesen()
'Beschleunigung ein
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
'** Dimensionierung der Variablen
Dim pfad As String, datei As String, blatt As String, zelle As String
'** Angaben zur auszulesenden Zelle
pfad = "X:\Ankdg\Erledigt\"
blatt1 = "Info"
blatt2 = "ETK"
bezug1 = "E11"
bezug2 = "E13"
bezug3 = "C4"
bezug4 = "B18"
bezug5 = "C7"
For i = 2 To Range("K1")
datei = Range("B" & i)
Range("C" & i).Value = GetValue(pfad, datei, blatt1, bezug1)
Range("D" & i).Value = GetValue(pfad, datei, blatt1, bezug2)
Range("E" & i).Value = GetValue(pfad, datei, blatt2, bezug3)
Range("F" & i).Value = GetValue(pfad, datei, blatt1, bezug4)
Range("G" & i).Value = GetValue(pfad, datei, blatt2, bezug5)
Next i
'Beschleunigung aus
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
End Sub
Vielen Dank für die Hilfe vorab! - bleibt gesund!
Viele Grüße
Rumo0815
------------------------
Bei Licht betrachtet ist der Leithammel auch nur ein Schaf.
Rumo0815
------------------------
Bei Licht betrachtet ist der Leithammel auch nur ein Schaf.