2017-04-03 211 views
0

Tl:dr当Excel未打开时,查看是否有任何方法启动Excel VBA宏。Excel关闭时启动宏

长版本:我有一个宏从一组特定的网站获取数据,并相应地更新电子表格。唯一的问题是数据会在不方便的时间更新,即星期一早上05.00(GMT)和星期四早上01.15(GMT)。

我需要的是一种Excel自启动方式,收集数据,更新电子表格,然后关闭。这可能吗?

+1

创建一个VbScript文件并编写代码来运行您的Excel宏,并安排它在所需的时间运行。 – ManishChristian

+0

这[问题及其答案](http://stackoverflow.com/q/10232150/7648526)应该有所帮助。 – SteveES

+0

是使用Windows TASK SCHEDULER来调用该过程。应该是一个相当简单的过程,只需包含START A PROGRAM,应用程序名称,EXCEL和文件名(包括路径)即可。确保XLS在THISWORKBOOK中有一个WORKBOOK_OPEN子例程。如果你希望我能以正式答案拼出来。请告诉我。 – flaZer

回答

2

更容易 - 不需要VB脚本。

运行WINDOWS TASK SCHEDULER,使用Excel作为应用程序设置作业。

enter image description here

你必须寻找EXCEL.EXE - 因为我的版本,我在这里找到:

"C:\Program Files (x86)\Microsoft Office\Office15\EXCEL.EXE"

下一页提供参数的完整路径宏嵌入式Excel文件。 对于我的测试,我在我的桌面上调用的文件:

C:\Users\br12260\Desktop\TimeSeries.xls

然后,只需确保您的工作簿在ThisWorkbook模块的Workbook_Open程序触发您的代码:

enter image description here

2

如果我是你,我会这样说:

起初我安装第三方程序,与我打开XLSM文件,在需要时。

一旦Excel打开了电子表格,您可以创建一个Sub Workbook_Open()例程来自动运行您的宏。您的宏可以在完成后关闭电子表格,然后退出Excel。

1

最好的方法是写一个VB.net脚本来做到这一点。

最简单的方法是在夜间离开电脑开启并按照this简明教程:

Public dTime As Date 
Dim lNum As Long 

Sub RunOnTime() 
    dTime = Now + TimeSerial(0, 0, 10) 
    Application.OnTime dTime, "RunOnTime" 

    lNum = lNum + 1 
    If lNum = 3 Then 
     Run "CancelOnTime" 
    Else 
     MsgBox lNum 
    End If 

End Sub 

Sub CancelOnTime() 
    Application.OnTime dTime, "RunOnTime", , False 
End Sub 

另一种方式是使用Windows计划,写在this answer