Refresh entire Excel workbook (all data connections and calculations) every 15 minutes?

烂漫一生 提交于 2019-12-18 07:18:51

问题


I have the following macro to refresh my workbook. This is the same as clicking on the refresh all button.

Is there a time element I can add to this code to refresh all data connections and all calculations on all the worksheets in my workbook every 15 minutes?

The workbook has cells pulling data from SharePoint list items and contain typical formula calculations as well.

Sub Workbook_RefreshAll()
ActiveWorkbook.RefreshAll
End Sub

回答1:


Enter the following in a standard module:

Public RunWhen As Double
Public Const cRunIntervalMinutes = 15
Public Const cRunWhat = "Workbook_RefreshAll"

Sub StartTimer()
    RunWhen = Now + TimeSerial(0, cRunIntervalMinutes, 0)
    Application.OnTime earliesttime:=RunWhen, procedure:=cRunWhat, _
         schedule:=True
End Sub

Sub StopTimer()
   On Error Resume Next
   Application.OnTime earliesttime:=RunWhen, _
       procedure:=cRunWhat, schedule:=False
End Sub

Sub Workbook_RefreshAll()
    Application.CalculateFullRebuild
    ActiveWorkbook.RefreshAll
    Call StartTimer
End Sub

To begin the process run StartTimer() and to end the process run StopTimer()

Adapted from Chip Pearson's Site

I used some Shapes to run the macros:




回答2:


You can use the Application.OnTime method to schedule a macro to be run in the future: https://msdn.microsoft.com/en-us/library/office/ff196165.aspx

Yet, this is a one time event only. To make it recursive, you'll have to include in that macro (yet again) another Application.OnTime to ensure a calling "every 15 minutes".




回答3:


to refresh all calculations you can use:

application.Calculate

P.S.: Sorry my english



来源:https://stackoverflow.com/questions/36867158/refresh-entire-excel-workbook-all-data-connections-and-calculations-every-15-m

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!