Vba 刷新公式的连续循环

Vba 刷新公式的连续循环,vba,function,excel,loops,Vba,Function,Excel,Loops,我有一个工作表,它使用=Files作为命名范围(这样我可以看到文件夹中的文件。然后我有一个移动按钮,可以将文件从一个文件夹移动到另一个文件夹)。 当我点击命令按钮时,我已经告诉它执行移动和 ActiveSheet.EnableCalculation = False ActiveSheet.EnableCalculation = True 这真是太棒了。 唯一的问题是,只有当我单击“移动”按钮时,才会更新我的文件列表 是否有任何方法使此功能始终工作? 不点击按钮。。。。。 因此,只要文件处于打开

我有一个工作表,它使用=Files作为命名范围(这样我可以看到文件夹中的文件。然后我有一个移动按钮,可以将文件从一个文件夹移动到另一个文件夹)。 当我点击命令按钮时,我已经告诉它执行移动和

ActiveSheet.EnableCalculation = False
ActiveSheet.EnableCalculation = True
这真是太棒了。 唯一的问题是,只有当我单击“移动”按钮时,才会更新我的文件列表

是否有任何方法使此功能始终工作? 不点击按钮。。。。。 因此,只要文件处于打开状态,它就会始终执行刷新


理想情况下,我可以告诉它每X秒做一次……但这不是必须的。

基于您在机器上只使用此工作簿,而不做任何事情的事实,您可以将代码放入工作簿的
工作簿打开事件中(VBE中的此工作簿模块)并用
Do循环
环绕它,如下所示

Private Sub Workbook_Open()

Do

    'code to move files

    Application.Wait Now + TimeValue("0:05:00"))  'waits 5 minutes       

Loop Until Time() >= TimeValue("17:00:00") '5pm military time

ThisWorkbook.Close True 'closes workbook after loop is over

End Sub
打开工作簿时,此代码将执行,基本上一直持续到一天中定义的时间段,然后关闭工作簿,每x分钟暂停一次循环(由Application.Wait设置)

替代方法 或者,正如Tim Williams所建议的,您可以将循环与
Application.OnTime
命令一起使用,如下所示

Private Sub Workbook_Open()

Dim t as Date
t = Now + TimeValue("00:00:05") 'just give a 5 seconds to start loop

Do 

  Application.OnTime t, "mySub" 'where mySub is your sub name

  t = Now + TimeValue("00:05:00") 'sets t to 5 minutes from now

Loop Until t > = TimeValue("17:00:00")

ThisWorkbook.Close True

End Sub

如果您让代码在打开的工作簿中无休止地运行,您将在一天中使用Excel时受到严重阻碍。但是,您可以创建一个
vbscript
,在单独的Excel实例中打开工作簿并运行代码,然后关闭工作簿。然后使用任务计划程序安排vbscript每X秒运行一次ds。情况是,该文件位于一台计算机上,该计算机整天只运行excel文件。绝对没有其他功能。因为我需要整天打开excel文件。这样可以吗?您可以使用
Application.OnTime()
定期更新。您不必关闭计算再重新打开Excel计算,只需使用
应用程序即可。计算
。请根据您上次的评论查看我的答案。