在Excel工作表上,我使用Microsoft Power Query創建了多個SQL查詢, 這些查詢應每5秒刷新一次,以便從SQ數據庫中檢索新信息。每5秒運行一次宏
刷新,我去Excel中的數據標籤並點擊刷新按鈕,所有這些刷新所有workbooks.This做工不錯
我想每5秒 理想的情況下自動完成這一要求,宏應運行在後臺每5秒鐘命令Ctrl + Alt + F5。
我怎樣才能做到這一點
在Excel工作表上,我使用Microsoft Power Query創建了多個SQL查詢, 這些查詢應每5秒刷新一次,以便從SQ數據庫中檢索新信息。每5秒運行一次宏
刷新,我去Excel中的數據標籤並點擊刷新按鈕,所有這些刷新所有workbooks.This做工不錯
我想每5秒 理想的情況下自動完成這一要求,宏應運行在後臺每5秒鐘命令Ctrl + Alt + F5。
我怎樣才能做到這一點
的ThisWorkbook模塊
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 method到自身重新運行在5秒鐘內宏結束。
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
將值爲True並運行Deja_vu子過程。它會繼續運行,直到您將bKEEPWORKING
設置爲False。偶爾,我可能會跳過bKEEPWORKING
並讓它在特定工作表單元格上查找值。如果值爲0
那麼該過程不會重新安排自己。
感謝Jeeped!我在Om3r的解決方案中找到了我的答案。 – Sequel3