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

VBA Code vereinfachen

VBA Code vereinfachen
02.09.2021 00:39:55
Marko
Hallo,
mit folgendem Code kann ich ein PDF erzeugen und dieses speichern. Die Ausführung dauert jedoch extrem lange ca.5 Minuten. Wie kann ich dieses Makro beschleunigen?
Vielen Dank für Eure Hilfe. Gruß Marko

Private Sub CommandButton2_Click()
CommandButton2.Caption = "PDF erzeugen"
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
Dim strFilename As String
strFilename = Environ("USERPROFILE") & "\Documents\" & "\KoBo\" & Sheets("Tabelle3").Range("L20").Text & ".pdf"
If Dir(strFilename) = "" Then
Sheets("Tabelle1").Calculate
Sheets("Tabelle3").Calculate
Sheets("Tabelle3").Range("K65:K381").AutoFilter Field:=1, Criteria1:="x", visibledropdown:=False
Sheets("Tabelle3").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strFilename, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Else
MsgBox "Diese PDF-Datei existiert bereits", vbOKOnly + vbInformation, "Hinweis"
End If
Sheets("Tabelle3").Range("M2").FormulaLocal = "=I9"
MsgBox "Die vorläufige Bonusabrechnung wurde erfolgreich erstellt!", vbInformation, "PDF erzeugen"
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code vereinfachen
02.09.2021 06:54:11
ralf_b
erstmal frage ich mich warum du die Calculation auf manuell stellst und sie dann trotzdem auslöst.
Wie lange läuft denn das Script wenn du die beiden Calculates nicht auslöst?
AW: VBA Code vereinfachen
02.09.2021 07:32:15
Klaus
Hi,
ich schließe mich an: Das Script ist gut, langsam müssen die Calculates sein. Zum Verbessern der Geschwindigkeit müsste man also deine Daten und Formelstruktur sehen, nicht dein Script!
Verifizier erstmal die These. Lass das Makro so durchlaufen:

Private Sub CommandButton2_Click()
Dim t
t = Timer
CommandButton2.Caption = "PDF erzeugen"
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
Dim strFilename As String
strFilename = Environ("USERPROFILE") & "\Documents\" & "\KoBo\" & Sheets("Tabelle3").Range("L20").text & ".pdf"
Debug.Print Timer - t & " STR_Filename"
If Dir(strFilename) = "" Then
Sheets("Tabelle1").Calculate
Debug.Print Timer - t & " Calculate1"
Sheets("Tabelle3").Calculate
Debug.Print Timer - t & " Calculate2"
Sheets("Tabelle3").Range("K65:K381").AutoFilter Field:=1, Criteria1:="x", visibledropdown:=False
Debug.Print Timer - t & " Autofilter"
Sheets("Tabelle3").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strFilename, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Debug.Print Timer - t & " PDF Export"
Else
MsgBox "Diese PDF-Datei existiert bereits", vbOKOnly + vbInformation, "Hinweis"
End If
Sheets("Tabelle3").Range("M2").FormulaLocal = "=I9"
Debug.Print Timer - t & " FormulaLocal"
MsgBox "Die vorläufige Bonusabrechnung wurde erfolgreich erstellt!", vbInformation, "PDF erzeugen"
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
und kopiere hier die Debug.Prints herein, dann sehen wir wo genau es lange dauert und wo nicht.
LG,
Klaus M.
Anzeige
VBA Code vereinfachen
02.09.2021 15:15:51
Marko
Hallo Klaus M.
vielen Dank für Deine Unterstützung. Ich habe mein Makro mit Deinem ersetzt und... jetzt läuft es wieder in der gewohnten Geschwindigkeit durch. Warum auch immer...
Viele Grüße, Marko
AW: VBA Code vereinfachen
03.09.2021 06:47:42
Klaus
Hallo Marko,
das macht überhaupt keinen Sinn, mein Makro müsste sogar ein paar Nanosekunden langsamer laufen. Es macht ja nichts anders, ausser Zeiten zu debuggen.
Naja, egal - was funktioniert muss nicht hinterfragt werden :-) Wenn es dir hilft, freut es mich.
LG,
Klaus M.
VBA Code vereinfachen
02.09.2021 15:21:07
Marko
Hallo Ralf,
vielen Dank für Deine Nachricht. Die Calculation habe ich auf manuell gestellt, weil ich im diesen "Beschleuniger" mir aus dem Netz geholt habe mit der Hoffnung das Makro damit zu beschleunigen.
Gruß, Marko
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige