excel 没有正确关闭 - 用户窗体挂起?
excel not closing correctly - userform hanging?
我有一个 spreadsheet,有 6 个用户表单,用于大约 30 台计算机。 VBA 代码受密码保护。经常在我们关闭sheet时,会出现VBA项目密码框,excel.exe留在任务管理器中。
我做了一些测试并得出以下结论:
- 只有在打开用户表单时才会出现此问题。
- 除了按“取消”(调用“卸载我”)外,无需对用户窗体执行任何操作即可弹出窗口
Workbook_BeforeClose事件如下:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ScreenUpdating = False
'Cancel autosave
Sheets("BOH General").Range("A102").Value = 0
AutoSaveTimer
'Application.EnableEvents = False
If Not Sheets("START").Visible = True Then Call CostingMode
Call BackItUp
'Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
下面是 Workbook_BeforeClose 调用的其他一些宏:
Sub AutoSaveTimer()
If Sheets("BOH General").Range("A102").Value > 0 Then
RunWhen = Now + TimeSerial(0, Sheets("BOH General").Range("A102").Value, 0)
Application.OnTime EarliestTime:=RunWhen, Procedure:="AutoSaveIt", _
Schedule:=True
Else
On Error Resume Next
Application.OnTime EarliestTime:=RunWhen, Procedure:="AutoSaveIt", _
Schedule:=False
On Error GoTo 0
End If
End Sub
Sub AutoSaveIt()
ThisWorkbook.Save
Call AutoSaveTimer
End Sub
Sub BackItUp()
'Dont run if unsaved
If Sheets("BOH General").Range("A111").Value = "" Then Exit Sub
'Prompt
If MsgBox("Do you want to backup this sheet now (recommended if you made any changes)?", vbYesNo) = vbNo Then Exit Sub
'reformat date
Dim DateStamp As String
DateStamp = Format(Now(), "yyyy-mm-dd hh-mm-ss")
On Error Resume Next
MkDir ActiveWorkbook.Path & "\" & "Backup"
On Error GoTo 0
ActiveWorkbook.SaveCopyAs (ActiveWorkbook.Path & "\" & "Backup" & "\" & ActiveWorkbook.Name & " - backup " & DateStamp & ".xlsb")
ActiveWorkbook.Save
End Sub
这是用户窗体错误吗,用户窗体是否未正确关闭?还是其他原因?
更新:此错误仅在用户单击 excel 关闭按钮(右上角)后发生,单击“文件”>“关闭”不会产生错误。
有趣的是,我也遇到过同样的情况,它也是最近才出现的。某个版本的 MOS 是否改变了这种行为?我在 Excel 12.0.6611.1000 和 12.0.6712.5000 上有用户没有收到此错误,在 12.0.6729.5000 上它总是发生。
编辑;
在发现有几个用户安装了 'Drop Box' 后,我今天最终解决了这个问题。在关闭应用程序之前卸载或关闭保管箱解决了该问题。
我有一个 spreadsheet,有 6 个用户表单,用于大约 30 台计算机。 VBA 代码受密码保护。经常在我们关闭sheet时,会出现VBA项目密码框,excel.exe留在任务管理器中。
我做了一些测试并得出以下结论:
- 只有在打开用户表单时才会出现此问题。
- 除了按“取消”(调用“卸载我”)外,无需对用户窗体执行任何操作即可弹出窗口
Workbook_BeforeClose事件如下:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ScreenUpdating = False
'Cancel autosave
Sheets("BOH General").Range("A102").Value = 0
AutoSaveTimer
'Application.EnableEvents = False
If Not Sheets("START").Visible = True Then Call CostingMode
Call BackItUp
'Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
下面是 Workbook_BeforeClose 调用的其他一些宏:
Sub AutoSaveTimer()
If Sheets("BOH General").Range("A102").Value > 0 Then
RunWhen = Now + TimeSerial(0, Sheets("BOH General").Range("A102").Value, 0)
Application.OnTime EarliestTime:=RunWhen, Procedure:="AutoSaveIt", _
Schedule:=True
Else
On Error Resume Next
Application.OnTime EarliestTime:=RunWhen, Procedure:="AutoSaveIt", _
Schedule:=False
On Error GoTo 0
End If
End Sub
Sub AutoSaveIt()
ThisWorkbook.Save
Call AutoSaveTimer
End Sub
Sub BackItUp()
'Dont run if unsaved
If Sheets("BOH General").Range("A111").Value = "" Then Exit Sub
'Prompt
If MsgBox("Do you want to backup this sheet now (recommended if you made any changes)?", vbYesNo) = vbNo Then Exit Sub
'reformat date
Dim DateStamp As String
DateStamp = Format(Now(), "yyyy-mm-dd hh-mm-ss")
On Error Resume Next
MkDir ActiveWorkbook.Path & "\" & "Backup"
On Error GoTo 0
ActiveWorkbook.SaveCopyAs (ActiveWorkbook.Path & "\" & "Backup" & "\" & ActiveWorkbook.Name & " - backup " & DateStamp & ".xlsb")
ActiveWorkbook.Save
End Sub
这是用户窗体错误吗,用户窗体是否未正确关闭?还是其他原因?
更新:此错误仅在用户单击 excel 关闭按钮(右上角)后发生,单击“文件”>“关闭”不会产生错误。
有趣的是,我也遇到过同样的情况,它也是最近才出现的。某个版本的 MOS 是否改变了这种行为?我在 Excel 12.0.6611.1000 和 12.0.6712.5000 上有用户没有收到此错误,在 12.0.6729.5000 上它总是发生。
编辑; 在发现有几个用户安装了 'Drop Box' 后,我今天最终解决了这个问题。在关闭应用程序之前卸载或关闭保管箱解决了该问题。