Mam skoroszyt, który zawiesza program Excel na zamknięciu, gdy zamknięcie jest uruchamiany przez zegar API.Błąd programu Excel 2016 na zainicjowanym zegarze interfejsu API Workbook.close
Edytuj: Skoroszyt w poniższym łączu ma tylko moduły zegara i wyjścia i ma takie samo działanie, więc nie stanowi problemu z zawartością.
https://www.dropbox.com/s/x0xdwgj5h34ctdk/Book1.xlsm?dl=0
kilka sekund po skoroszyt zamyka awarii programu. Próbowałem wyłączyć timer, odkryć wszystkie arkusze, rozładować formularze ... wszystkie obiekty są ustawione na Nothing
.
Wszystko, co robię, to Workbooks(ThisWorkbook.Name).Close SaveChanges:=True
?? !!
Ten sam sub jest wywoływany z UserForm bez problemu. Skoroszyt zamknie się bez awarii programu Excel.
Jak to naprawić?
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
Kod wyzwalany przez timer jest;
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
Formularz użytkownika mówi;
CloseUp:
i = MsgBox("Close Project Register?", vbYesNo, MsgBoxTitle)
Select Case i
Case vbYes
Call ApplicationExit
Case vbNo
Workbooks(ThisWorkbook.Name).Save
End Select
Zamknięcie wystąpienia programu Excel z application.ontime jest gorsze. Zamiast awaryjnie Excel zostanie zamknięty/zrestartowany kilka/wiele razy i może wymagać zabicia przez menedżera zadań, aby go zatrzymać. –