【发布时间】:2016-08-20 09:55:14
【问题描述】:
我有以下宏来刷新我的工作簿。这与单击全部刷新按钮相同。
我是否可以在此代码中添加时间元素来刷新我工作簿中所有工作表上的所有数据连接和所有计算每 15 分钟一次?
工作簿具有从 SharePoint 列表项中提取数据的单元格,并且还包含典型的公式计算。
Sub Workbook_RefreshAll()
ActiveWorkbook.RefreshAll
End Sub
【问题讨论】:
我有以下宏来刷新我的工作簿。这与单击全部刷新按钮相同。
我是否可以在此代码中添加时间元素来刷新我工作簿中所有工作表上的所有数据连接和所有计算每 15 分钟一次?
工作簿具有从 SharePoint 列表项中提取数据的单元格,并且还包含典型的公式计算。
Sub Workbook_RefreshAll()
ActiveWorkbook.RefreshAll
End Sub
【问题讨论】:
刷新您可以使用的所有计算:
application.Calculate
P.S.:对不起我的英语
【讨论】:
您可以使用Application.OnTime 方法来安排将来运行的宏:https://msdn.microsoft.com/en-us/library/office/ff196165.aspx
不过,这只是一次性活动。为了使其递归,您必须在该宏中(再次)包含另一个 Application.OnTime 以确保“每 15 分钟”调用一次。
【讨论】:
在标准模块中输入以下内容:
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
开始进程运行StartTimer(),结束进程运行StopTimer()
改编自Chip Pearson's Site
我使用了一些 Shapes 来运行宏:
【讨论】:
StartTimer() 和 StopTimer()` 分配给工作表上的某些形状。