退出Excel并注销时出错

时间:2012-07-12 09:06:34

标签: excel vba excel-vba quit logoff

我需要Excel VBA的一些帮助(2010年在Windows 7上)。 我要做的是关闭Excel然后关闭电脑。 我的代码是:

Declare Function ExitWindowsEx& Lib "User32" (ByVal uFlags As Long, ByVal dwReserved AS Long)
Global Const EWX_LOGOFF = 0
Global Const EWX_FORCE = 4

....Main Code Here ....

Application.DisplayAlerts = False
Application.Quit

Action = ExitWindows(EWX_LOGOFF or EWX_FORCE, 0)

间歇性地我收到以下错误:

  

无法退出Microsoft Excel

虽然机器仍然注销,这就是我想要的,所以这不是一个主要问题。我想干净地退出。我保留了EWX_FORCE,因为我不想被Windows提示。 有什么建议吗?

1 个答案:

答案 0 :(得分:0)

可能在DoEvents之后遗失Application.Quit?包括这样,以便Excel有足够的时间来关闭其他,你将收到一个错误。顺便说一句,这对我有用。

此外,如果打开任何工作簿/工作簿,那么最好在保存代码的情况下关闭它/它们,因为您可能会丢失数据。

Public Declare Function ExitWindowsEx Lib "user32" (ByVal dwOptions As Long, _
ByVal dwReserved As Long) As Long

Public Const EWX_LogOff As Long = 0
Public Const EWX_SHUTDOWN As Long = 1
Public Const EWX_REBOOT As Long = 2
Public Const EWX_FORCE As Long = 4

Sub Sample()
    '
    '~~> Main Code Here
    '
    Application.DisplayAlerts = False
    Application.Quit

    DoEvents

    ExitWindowsEx EWX_LogOff Or EWX_FORCE, &HFFFF
End Sub