中断工作(在任何活动文件中)每x分钟运行一次macros – Excel VBA

我有一个应该每x分钟运行的macros将当前文件保存到指定的位置。 我使用这个链接来帮助编写代码 – > VBAmacros定时器样式来运行代码每个集合的秒数,即120秒

但是,当另一个excel文件打开并且有人正在处理这个macros时,这个macros就会被绊倒。

有没有办法打断用户的当前操作,并用消息框或其他方式通知他,以便macros可以继续?

Dim TimeToRun, k, RDNum, DestinationFolderName, MasterFile, TestCellNum Sub ScheduleIt() TimeToRun = Now + TimeValue("00:00:10") Application.OnTime TimeToRun, "CopyPriceOver" End Sub Sub CopyPriceOver() Windows(MasterFile).Activate Worksheets("Save Log").Activate dt = Format(CStr(Now), "mm-dd-yyyy hh-mm-ss") MasterFileName = DestinationFolderName & "RD" & RDNum & " " & TestCellNum & " " & dt & ".xlsb" ActiveWorkbook.SaveAs Filename:=MasterFileName, FileFormat:=xlExcel12, CreateBackup:=False Call ScheduleIt End Sub Sub AutoOpen() k = 1 Worksheets("Test Header").Activate RDNum = Range("C4").Value LR = Cells(Rows.Count, "I").End(xlUp).Row 'Sets the last row TestCellNum = Cells(LR, "I").Value DestinationFolderName = "\\C:\Directory\" MasterFile = ThisWorkbook.Name Call ScheduleIt End Sub Sub AutoClose() Application.OnTime TimeToRun, "CopyPriceOver", , False End Sub 

检查目标工作簿是否已激活,因此只能在该工作簿上执行保存操作:

 Public Sub OnTimeCallback() If ActiveWorkbook.Name = "MyWorkbook.xlsm" Then Debug.Print "Save some stuff" End If alertTime = Now + TimeValue("00:0:02") Application.OnTime alertTime, "OnTimeCallback" End Sub 

一个更好的解决scheme是使用Workbook_Activate / Workbook_Deactivate事件,只要另一个工作簿处于活动状态,就停用计时器。