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

Langsamer ablauf von "Kopier" Makro

Langsamer ablauf von "Kopier" Makro
22.11.2019 13:08:04
"Kopier"
Hallo zusammen,
ich habe ein Makro geschrieben wo ich relativ simpel den Inhalt aus DateiA, in DateiB übertragen möchte.
Die Zeilenmenge in DateiA ändert sich aber dauerhaft, einzige Konstante sind die Spalten. Ebenso ist der Bereich zum Einfügen des kopierten Inhalts in DateiB festgelegt.
DateiB enthält noch Abfragen (=WENN; =SUMME; ect.) die auf Basis des eingefügten Inhaltes aus DateiA die benötigten Werte berechnet/liefert.
Mein Skript dazu sieht so aus:

Sub fftcImporting()
Dim wbk_ziel As String
Dim Anzahlzeilen As Integer
Dim Anzahlzeilen_FFTC As Integer
Dim sheet_seite_ziel As Integer
Dim sheet_seite_quelle As Integer
Dim reihe_ziel As Integer
Dim reihe_quelle As Integer
Dim spalte As Integer
'Prüfen ob Datei mit Informationen vorhanden ist
If Dir(ThisWorkbook.Path & "\DateiA.xls") = "" Then
MsgBox "Fehlende Quelldatei" & vbCrLf & "Das Makro wird abgebrochen", vbExclamation
Exit Sub
End If
wbk_ziel = ThisWorkbook.Name 'DateiB
sheet_seite_quelle = 1
For sheet_seite_ziel = 2 To 17
'Zellen leeren
Anzahlzeilen = Workbooks(wbk_ziel).Worksheets(sheet_seite_ziel).Range("A65535").End( _
xlUp).Row
If Anzahlzeilen = 1 Then
Anzahlzeilen = Anzahlzeilen + 2
End If
Workbooks(wbk_ziel).Worksheets(sheet_seite_ziel).Range("A3" & ":F" & Anzahlzeilen). _
ClearContents
'Daten aus DateiA kopieren
Anzahlzeilen_FFTC = Workbooks("DateiA.xls").Worksheets(sheet_seite_quelle).Range(" _
A65535").End(xlUp).Row
reihe_ziel = 3
reihe_quelle = 2
For i = 1 To Anzahlzeilen_FFTC
For spalte = 1 To 6
ThisWorkbook.Worksheets(sheet_seite_ziel).Cells(reihe_ziel, spalte) = Workbooks( _
_
_
"DateiA.xls").Worksheets(sheet_seite_quelle).Cells(reihe_quelle, spalte)
Next spalte
reihe_ziel = reihe_ziel + 1
reihe_quelle = reihe_quelle + 1
Next i
sheet_seite_quelle = sheet_seite_quelle + 1
'MsgBox sheet_seite_quelle
Next sheet_seite_ziel
Workbooks("DateiA.xls").Close False
End Sub

Wenn ich das Makro jetzt laufen lasse, werden 15 Sheets durchsucht und die Dauer ist meist bei 10+ Minuten. Könnt Ihr mir helfen das ganze schneller laufen zu lassen?
Gruß,
Sco

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Langsamer ablauf von "Kopier" Makro
22.11.2019 13:13:44
"Kopier"
Hallo
Da beim Einfügen die Formeln immer neu berechnet werden solltest Du dies vorerst einmal ausschalten
Am Anfang Deines Codes:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
und am Ende
Application.ScreenUpdating = False
Application.Calculation = xlCalculationAutomatic
AW: Langsamer ablauf von "Kopier" Makro
25.11.2019 08:02:45
"Kopier"
Hey,
vielen Dank für den Tipp! Hat super funktioniert :-)
Jetzt ist die Wartezeit runter von ~10 Minuten auf 10 Sekunden.
Gruß,
Danny
AW: Range auf einmal kopieren
22.11.2019 13:15:21
Fennek
Hallo,
ohne es getestet zu haben vermute ich den "Zeitfresser" hier:

For i = 1 To Anzahlzeilen_FFTC
For spalte = 1 To 6
ThisWorkbook.Worksheets(sheet_seite_ziel).Cells(reihe_ziel, spalte) = Workbooks( _
_
_
_
"DateiA.xls").Worksheets(sheet_seite_quelle).Cells(reihe_quelle, spalte)
Next spalte
reihe_ziel = reihe_ziel + 1
reihe_quelle = reihe_quelle + 1
Next i
Kopiere den gesamten Bereich auf einmal.
mfg
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige