Ich habe eine Arbeitsmappe, die Excel beim Schließen stürzt ab, wenn die Schließung von einem API-Timer ausgelöst wird.Excel 2016 Absturz auf API-Timer initiiert Workbook.close
Bearbeiten: Die Arbeitsmappe in Link unten hat nichts als die Timer und Exit-Module und es hat das gleiche Verhalten, so ist es kein Problem mit dem Inhalt.
https://www.dropbox.com/s/x0xdwgj5h34ctdk/Book1.xlsm?dl=0
Einige Sekunden nach der Arbeitsmappe stürzt Excel schließt. Ich habe versucht, den Timer auszuschalten, alle Blätter zu verstecken, Formulare zu entladen ... alle Objekte sind auf Nothing
eingestellt.
Alles was ich mache ist Workbooks(ThisWorkbook.Name).Close SaveChanges:=True
?? !!
Das gleiche Sub wird von einem UserForm ohne Problem aufgerufen. Die Arbeitsmappe wird geschlossen, ohne dass Excel abstürzt.
Wie behebt man das?
Sub ApplicationExit()
' Call UnloadAllForms
' DoEvents
' Sleep 1000
' Call StopCloseTimer
'DoEvents
'If Application.Workbooks.Count = 1 Then
' Workbooks(ThisWorkbook.Name).Save
' Application.Quit
'Else
DoEvents
Workbooks(ThisWorkbook.Name).Close SaveChanges:=True
'End If
End Sub
Der vom Timer ausgelöste Code ist;
Sub TimerCalled()
If CloseTimerValue = "" Then Call Reset_CloseTimerValue
DoEvents
If basTimers.CloseTimerValue <= Now() And Not Unlocked Then Call ApplicationExit
On Error Resume Next 'In case sheet is protected
ThisWorkbook.Sheets("JobIndex").Range("CloseCount").Value = Format(Now() - CloseTimerValue, "hh:m:s")
End Sub
Das Benutzerformular sagt;
CloseUp:
i = MsgBox("Close Project Register?", vbYesNo, MsgBoxTitle)
Select Case i
Case vbYes
Call ApplicationExit
Case vbNo
Workbooks(ThisWorkbook.Name).Save
End Select
Das Schließen der Excel-Instanz von application.ontime ist schlechter. Statt Absturz Excel wird heruntergefahren/neu gestartet mehrere/viele Male und erfordern möglicherweise Kill über Task-Manager, um es zu stoppen. –