ich würde gerne die Performance meiner Kopiervorgänge steigern.
Kurz zur Situation:
Die Übersichtsdatei läd Daten aus verschiedenen anderen Excel-Dateien zusammen. Dabei werden die einzelnen Excel-Dateien jedoch nicht geöffnent. Wenn ich nun den Code ausführen dauert das "zusammen kopieren" der einzelnen Dateien ca. 80 Sekunden.
Das ist immernoch maßgeblich schneller als händische kopieren, trotzdem würde mich interessieren ob es Möglichkeiten gibt die Performance zu steigern.
Über diese Funktionen werden die Daten aus den einzelenen Regionen in die Übersichtsdatei gealden:
Private Function GetValue(pfad, datei, blatt, zelle)
'** Daten aus geschlossener Arbeitsmappe auslesen
'*** Dimensionierung der Variablen
Dim arg 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
arg = "'" & pfad & "[" & datei & "]" & blatt & "'!" & Range(zelle).Range("A1").Address(, , _
xlR1C1)
'** Auslesen über Excel4Macro
GetValue = ExecuteExcel4Macro(arg)
End Function
Sub BaWü_auslesen()
'** Dimensionierung der Variablen
Dim pfad As String, datei As String, blatt As String, bereich As Range, zelle As Object
'** Angaben zur auszulesenden Zelle
pfad = ThisWorkbook.Path
datei = "Bawü - Editable.xlsx"
blatt = "Projektliste"
Set bereich = Range("B6:J195")
'** Bereich auslesen
For Each zelle In bereich
'** Zellen umwandeln
zelle = zelle.Address(False, False)
'** Eintragen in Bereich
ActiveWorkbook.Sheets("BaWü").Cells(zelle.Row, zelle.Column).Value = GetValue(pfad, datei, _
blatt, zelle)
Application.CutCopyMode = False
Next zelle
End Sub
Der Vorgang wird für smätliche Regionen wiederholt:
Sub Test()
BaWü_auslesen
Bayern_auslesen
Mitte_auslesen
Nord_auslesen
Ost_auslesen
West_auslesen
End Sub
Falls jemand eine Idee wie man das schlanker macht und so die Perfomrance steigert, immer raus damit :)
PS: Falls jemand noch eine Idee hat wie man nach Beendigung des Kopiervorgangs den Zwischenspeicher freigibt würde mir das auch helfen.
Grüße
Daniel