Vba 自动关闭带有警告弹出窗口的Excel工作簿

Vba 自动关闭带有警告弹出窗口的Excel工作簿,vba,excel,auto-close,Vba,Excel,Auto Close,我遇到多个用户需要访问工作簿的情况(由于所有问题,我希望避免使用“共享工作簿”选项)。我已经确定一个可能的解决方案是让工作簿在15分钟不活动后自动关闭 我还希望在15分钟后弹出一条消息,提醒用户除非单击“确定”按钮,否则工作簿将关闭。如果他们点击按钮,我希望计数器重新开始,理想情况下,如果他们不点击任何东西,工作簿将在1分钟后自动关闭 我在网上找到了一些我用过的代码。工作簿在指定时间后成功关闭,但我不知道如何使消息框弹出。非常感谢您的帮助,谢谢 我使用的代码如下: 在单元1中: Dim Down

我遇到多个用户需要访问工作簿的情况(由于所有问题,我希望避免使用“共享工作簿”选项)。我已经确定一个可能的解决方案是让工作簿在15分钟不活动后自动关闭

我还希望在15分钟后弹出一条消息,提醒用户除非单击“确定”按钮,否则工作簿将关闭。如果他们点击按钮,我希望计数器重新开始,理想情况下,如果他们不点击任何东西,工作簿将在1分钟后自动关闭

我在网上找到了一些我用过的代码。工作簿在指定时间后成功关闭,但我不知道如何使消息框弹出。非常感谢您的帮助,谢谢

我使用的代码如下:

在单元1中:

Dim DownTime As Date

Sub SetTimer()
    DownTime = Now + TimeValue("0:15:00")
    Application.OnTime EarliestTime:=DownTime, _
      Procedure = "ShutDown", Schedule:=True
End Sub
Sub StopTimer()
    On Error Resume Next
    Application.OnTime EarliestTime:=DownTime, _
      Procedure:="ShutDown", Schedule:=False
 End Sub
Sub ShutDown()
    Application.DisplayAlerts = False
    With ThisWorkbook
        .Saved = True
        .Close
    End With
End Sub 
在此工作簿中:

Private Sub Workbook_Open()
    Call SetTimer
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call StopTimer
End Sub
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    Call StopTimer
    Call SetTimer
 End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
  ByVal Target As Excel.Range)
    Call StopTimer
    Call SetTimer
End Sub

尝试以下
关闭
程序:

Sub ShutDown()
    If CreateObject("WScript.Shell").PopUp("Close Excel?", 60, "Excel", vbOKCancel + vbQuestion + vbSystemModal) = vbCancel Then
        StopTimer
        SetTimer
        Exit Sub
    End If
    Application.DisplayAlerts = False
    With ThisWorkbook
        .Saved = True
        .Close
    End With
End Sub

切勿与同事在网络驱动器上“共享”Excel文件。您将遇到各种问题,包括工作簿损坏和其他问题。尝试此脚本,在n分钟不活动后自动关闭Excel文件

首先,将以下代码添加到标准宏模块中。请注意,要添加三个例程: 将停机时间设置为日期

Sub SetTimer()
    DownTime = Now + TimeValue("01:00:00")
    Application.OnTime EarliestTime:=DownTime, _
      Procedure = "ShutDown", Schedule:=True
End Sub
Sub StopTimer()
    On Error Resume Next
    Application.OnTime EarliestTime:=DownTime, _
      Procedure:="ShutDown", Schedule:=False
 End Sub
Sub ShutDown()
    Application.DisplayAlerts = False
    With ThisWorkbook
        .Saved = True
        .Close
    End With
End Sub
接下来的例程(共有四个)需要添加到ThisWorkbook对象中。打开VBA编辑器并双击项目资源管理器中的ThisWorkbook对象。在Excel打开的代码窗口中,放置以下例程:

Private Sub Workbook_Open()
    Call SetTimer
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call StopTimer
End Sub
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    Call StopTimer
    Call SetTimer
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
  ByVal Target As Excel.Range)
    Call StopTimer
    Call SetTimer
End Sub
有关所有信息,请参见此


MsgBox(“时间到了?”)?这样不行?再想想,如果工作簿处于非活动状态,则显示消息框不会有帮助,因为它需要用户输入,而且用户可能已经离开了。:-)@dgorti然后可以按预期关闭工作簿。不要从“关机”子窗口关闭工作簿,而是为此编写另一个子窗口。在此子系统中添加ontimer事件(持续1分钟),并调用新子系统进行真正的关闭。您可以根据需要显示来自“Shutdown”(关闭)子系统的消息。注意:不要使用“msgbox”显示消息,因为它会抛出一个需要交互的对话框。而是创建一个简单的消息显示表单,该表单可以在1分钟后卸载。我可以在完成工作后给您一个示例