每5秒运行一次macros

在Excel工作表中,我使用Microsoft Power Query创build了多个SQL查询,这些查询应该每5秒刷新一次,以便从SQ数据库中检索新信息。

要刷新,我转到Excel中的数据选项卡,并点击刷新全部button,刷新所有工作簿。这很好

我希望每5秒自动执行一次这个请求。理想情况下,一个macros应该在后台每5秒运行一次命令Ctrl + Alt + F5。

我怎样才能做到这一点

这个工作簿模块

Option Explicit Private Sub Workbook_Open() Call StartTimer End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) Call StopTimer End Sub 

一般模块

 Option Explicit Dim RunTime Sub StartTimer() Application.ScreenUpdating = False ActiveWorkbook.RefreshAll RunTime = Now + TimeValue("00:00:15") Application.OnTime RunTime, "RefreshTime" Application.ScreenUpdating = True End Sub Sub StopTimer() ' http://www.cpearson.com/excel/OnTime.aspx On Error Resume Next Application.OnTime RunTime, "RefreshTime", Schedule:=False On Error GoTo 0 End Sub Sub RefreshTime() ActiveWorkbook.Save StartTimer End Sub 

只需将一个Application.OnTime方法添加到在5秒内重新运行的macros的末尾即可。

 Option Explicit Public bWORKING As Boolean Public bKEEPWORKING As Boolean Sub deja_vu() 'never let it run on top of itself If bWORKING Then Exit Sub bWORKING = True 'do something here; refresh connections or whatever Debug.Print Now 'just to show it did something If bKEEPWORKING Then _ Application.OnTime Now + TimeSerial(0, 0, 5), "deja_vu" bWORKING = False End Sub 

bKEEPWORKING赋值为True并运行Deja_vu子过程。 它将继续运行,直到您将bKEEPWORKING设置为False。 偶尔,我可能会跳过bKEEPWORKING并让它在特定的工作表单元格上查找值。 如果该值为0那么该过程不会重新安排自己。