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