Vba保持重新打开具有“自动保存x分钟”和“自动关闭x分钟”的文件

Vba保持重新打开具有“自动保存x分钟”和“自动关闭x分钟”的文件,vba,excel,Vba,Excel,需要做什么: 如果在注册此宏的位置打开多个文件,则在进行更改时,该文件将每5分钟自动保存一次 如果文件中没有更改,则它会在几分钟内关闭文件,同时保留所有更改 我想通过变量“If the file have change”来减少自动保存的数量 我计划在几个打开的文件中同时使用这些宏 非常重要的是,[If ThisWorkbook.Saved=False Then…]函数的工作方式是,只有在发生更改时才保存它 这一想法产生地点的链接: [ 示例文件 [ 请让我知道我做错了什么。 谢谢 您收到了什么样

需要做什么:

如果在注册此宏的位置打开多个文件,则在进行更改时,该文件将每5分钟自动保存一次

如果文件中没有更改,则它会在几分钟内关闭文件,同时保留所有更改

我想通过变量“If the file have change”来减少自动保存的数量

我计划在几个打开的文件中同时使用这些宏

非常重要的是,[If ThisWorkbook.Saved=False Then…]函数的工作方式是,只有在发生更改时才保存它

这一想法产生地点的链接: [

示例文件 [

请让我知道我做错了什么。 谢谢


您收到了什么样的错误?您的问题中没有说明您遇到了什么问题,即使在打开示例文件后也不清楚。谢谢您您需要提出实际问题和/或问题,而不是“让我知道我做错了什么”。“我们不清楚这是否对您有效,您可能遇到了什么问题,等等。文件是否没有保存?请具体说明您的问题,以便社区可以尝试给您一个非常直接和准确的答案。
Option Explicit 
Public RunWhen As Double 
Public Const cRunIntervalSeconds = 8 ' sec
Public Const cRunWhat = "TheSub" ' the name of the procedure to run
Public RunWhenq As Double 
Public Const cRunIntervalSecondsq = 20 ' sec
Public Const cRunWhatq = "TheSubq" ' the name of the procedure to run
Sub StartTimer() 
    RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds) 
    Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, _ 
    Schedule:=True 
End Sub 
Sub TheSub() 


    If ThisWorkbook.Saved = False Then 
        ThisWorkbook.Save 
        StartTimer 

    Else 
        StartTimer 
    End If 


End Sub 


Sub StopTimer() 
    On Error Resume Next 
    Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, _ 
    Schedule:=False 
End Sub 
Sub StartTimerq() 
    RunWhenq = Now + TimeSerial(0, 0, cRunIntervalSecondsq) 
    Application.OnTime EarliestTime:=RunWhenq, Procedure:=cRunWhatq, _ 
    Schedule:=True 
End Sub 
Sub TheSubq() 
    With ActiveWorkbook 
        .Save 
        .Close 
    End With 
End Sub 
Sub StopTimerq() 
    On Error Resume Next 
    Application.OnTime EarliestTime:=RunWhenq, Procedure:=cRunWhatq, _ 
    Schedule:=False 
End Sub 
















Option Explicit 
Private Sub Workbook_Open() 
    Application.Calculation = xlManual 
    StartTimer 
    StartTimerq 
End Sub 
 'Private Sub Worksheet_Change(ByVal Target As Range)
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
    Application.Calculation = xlManual 
    ActiveSheet.Calculate 
    StartTimerq 
End Sub 
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _ 
    ByVal Target As Excel.Range) 
    StartTimerq 
End Sub 
Private Sub Workbook_SheetCalculate(ByVal Sh As Object) 
    StartTimerq 
End Sub 
Private Sub Workbook_Activate() 
    StartTimerq 
End Sub 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    StopTimerq 
    StopTimer 
End Sub 
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) 
    ThisWorkbook.Names.Add "prevsh__", Sh.Name 
End Sub