每天运行一次VBA Excel宏

时间:2017-04-22 11:01:32

标签: excel vba schedule

我有一些excel宏可以在特定的Excel工作表上运行。它会检查一些表格,并根据需要向某些人发送提醒电子邮件。 我希望这个宏每天运行一次,以便每天检查一次表格,这样我就不需要每天都打开工作表并自己动手了。它可以用来做吗?我听说Windows任务调度程序是一个选项,你认为这是一个很好的选择吗?

非常感谢!

2 个答案:

答案 0 :(得分:0)

如你所说,

任务计划程序是一个不错的选择。要生成一个新进程并打开一个工作簿,你需要一个命令行指定(1)Excel可执行文件和(2)要打开的工作簿,如

C:\Program Files\Microsoft Office 15\root\office15\Excel.exe "c:\MyWorkbook.xlsm"

我建议在工作簿的完整路径周围使用双引号(但Excel.exe不需要)。

然后在MyWorkbook.xlsm中,您可以编写在工作簿打开时运行的代码,通常在任何标准模块中都是sub Auto_OpenSub Workbook_Open()模块中的ThisWorkbook

答案 1 :(得分:0)

我建议使用VBScript文件,并使用任务计划程序使其每天运行。我更喜欢这个,因为那时我可以在一天中的任何时间打开Excel文件并且宏将不会运行(如果你只是想让它仅在那个特定时间更新)。

这是您需要在记事本中编写的VBscript,然后使用[ngClass]扩展名保存。

*.vbs

然后您可以从命令行设置事件调度程序,如here中所示:

Option Explicit
'On Error Resume Next 'Comment-out for debugging
ExcelMacro

Sub ExcelMacro() 

  Dim xlApp 
  Dim xlBook 

    Set xlApp = CreateObject("Excel.Application") 
    Set xlBook = 
    xlApp.Workbooks.Open("path\to\the\file.xlsm", 0, True) 

         xlApp.Run "Update" 'Name of your Sub
         xlBook.Save
         xlBook.Close
         xlApp.Quit 

    Set xlBook = Nothing 
    Set xlApp = Nothing 

End Sub 

您可能会觉得有用的其他链接:

来自超级用户

Task Scheduler from the command line? 来自 Linux&的

What is a simple way to schedule a single event to happen at some time in the future?的Unix

How to Schedule Programs to Run Automatically in Windows 7?来自 Gizmo的免费软件(TechSupportAlert)