Microsoft Excel

Herbers Excel/VBA-Archiv

Ausführung zeitgesteuerter Makros verhindern

Betrifft: Ausführung zeitgesteuerter Makros verhindern von: Christian
Geschrieben am: 29.01.2020 11:11:17

Moin allerseits,

als EXCEL-Autodidakt habe ich mehrere Dateien erstellt, die per Makro (update) in einem bestimmte Zeitintervall die Verknüpfung zu einer auf dem Firmenserver liegenden Datei aktualisieren.



Workbooks("Allround.xls").UpdateLink Name:="S:\Gemeinsame Dateien\DB.xlsm", Type:=xlExcelLinks


Dann wird der Zeitpunkt für die nächste Makroausführung festgelegt:



nextupd = Workbooks("A.xls").Worksheets("B").Cells(1, 3).Value + TimeValue("00:05:10")


und dieser Makro wird zum nächsten Termin wieder aufgerufen



Application.OnTime TimeValue(nextupd), "update"


Das funktioniert alles ganz prima.
Besonderheit bei dieser Datei ist, dass sie beim Schließen nicht gespeichert werden soll.
ThisWorkbook.Close SaveChanges:=False

Wenn ich jetzt aber diese Datei schließe, wird der Makro zum Termin nextupd wieder ausgeführt, wobei sich die Datei wieder öffnet.
Hat jemand eine Idee, wie man das verhindern kann. Am liebsten wäre mir ein Code unter
Private Sub Workbook_BeforeClose

Jetzt schon vielen Dank fürs Gedankenmachen
Gruß
Christian

Betrifft: AW: Ausführung zeitgesteuerter Makros verhindern
von: ChrisL
Geschrieben am: 29.01.2020 11:25:59

Hi Christian

Siehe z.B.
https://www.herber.de/forum/archiv/972to976/975046_OnTime_beenden.html

Schedule:=False

Den Code ins BeforeClose Ereignis aufzunehmen passt.

cu
Chris

Betrifft: AW: Ausführung zeitgesteuerter Makros verhindern
von: Christian
Geschrieben am: 29.01.2020 12:01:49

Hallo Chris,
wenn ich das so eingebe:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime , "Update", , schedule:=False
ThisWorkbook.Close SaveChanges:=False
End Sub

kommt die Meldung "Argument nicht optional."
Mache ich da etwas falsch?

Betrifft: AW: Ausführung zeitgesteuerter Makros verhindern
von: ChrisL
Geschrieben am: 29.01.2020 12:42:47

Hi Christian

Die Zeit musst du trotzdem angeben.

Application.OnTime TimeValue(nextupd), "Update", Schedule:=False

cu
Chris

Betrifft: AW: Ausführung zeitgesteuerter Makros verhindern
von: ChrisL
Geschrieben am: 29.01.2020 12:47:58

und ersetze

ThisWorkbook.Close SaveChanges:=False

durch

ThisWorkbook.Saved = True

sonst bleibt die die Applikation u.U. offen, obwohl die Mappe geschlossen wurde.

Betrifft: AW: Ausführung zeitgesteuerter Makros verhindern
von: Christian
Geschrieben am: 29.01.2020 12:52:46

Vielen dank für Deine Hilfe. Das hat sich jetzt gerade überschnitten.
Und wieder etwas gelernt.
Gruß
Christian

Betrifft: Gelöst
von: Christian
Geschrieben am: 29.01.2020 12:48:18

So funktioniert es:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime nextupd, "Update", , False
ThisWorkbook.Close SaveChanges:=False
End Sub
der EarliestTime-Wert (hier in der Variable nextupd) muss angegeben werden.

Danke!

Beiträge aus dem Excel-Forum zum Thema "Ausführung zeitgesteuerter Makros verhindern"