【问题标题】:Using Excel vba Macro to be run through Windows Schedule Task使用 Excel vba 宏通过 Windows 计划任务运行
【发布时间】:2014-07-30 13:03:54
【问题描述】:

我有一个 Excel 电子表格,我已经设置了一个计时器来将代码运行到数据库中。如果电子表格打开并且现在时间是在时间段内设置的时间,那么它将数据导出到数据库中

我在我的子程序和 workbook_open Application.OnTime TimeValue("22:00:00"), "ExportOpenJobs" 中都使用了这一行代码

这对于电子表格打开时非常有用,但我希望能够通过 Windows 计划任务进行设置。

我使用 Windows Server 2012 作为我的主机 PC 和存储文件的位置。在任务计划程序中,我将启动程序的操作和程序脚本设置为位置和实际的 *.xlsm 文件以及任务的开始时间。我在 Excel VBA 中的时间前 30 秒设置了此任务。

我的问题是 Windows 任务计划程序在设置的时间运行,在查看任务历史记录后,我可以看到任务开始/完成和操作开始/完成通常需要大约 50 分钟才能完成,但是当我检查数据库时Excel VBA 尚未运行。

如何让我的任务计划程序运行 Excel VBA 代码?

在 Windows Server 中你真的需要安装 Excel,因此应该在另一台机器上完成吗?

【问题讨论】:

    标签: vba excel scheduled-tasks


    【解决方案1】:

    您好,我要做的是创建此 .VBS 文件,然后使用 Windows 任务计划程序以所需的时间间隔执行此 vbs 文件。

    Set fso = CreateObject("Scripting.FileSystemObject")
    curDir = fso.GetAbsolutePathName(".")
    
    Set myxlApplication = CreateObject("Excel.Application")
    myxlApplication.Visible = False
    Set myWorkBook = myxlApplication.Workbooks.Open( curDir & "\myTest.xlsm" ) 'Change to the actual workbook that has the Macro
    myWorkBook.Application.Run "Module1.HelloWorld" 'Change to the Module and Macro that contains your macro
    myxlApplication.Quit
    

    Application.Run Method (Excel)

    此示例确实需要将 Excel 安装到运行计划任务的主机上。如果该主机是服务器或台式计算机是您的选择。

    Windows 任务计划程序应该为任务的操作部分完成:

    Action: Start a program

    Program/script: C:\Windows\SysWOW64\cscript.exe

    Add arguments (optional): C:\Path_to_your_vbs\Your.vbs

    Start in (optional): C:\Path_to_your_vbs\

    【讨论】:

    • 谢谢你,我应该通过什么来创建这个? Visual Studio 或类似软件?
    • 忽略之前的评论,我google了一下。因此,通过将宏设置为在此代码中运行,我就不需要使用 Application.On Time 事件了吗?
    • 这是正确的,在这种情况下,VBS 文件正在执行宏,而 Windows 任务计划程序正在说明何时执行宏。 VBS 还告诉 Excel 退出,然后当任务计划程序中的下一个事件发生时,该进程将重新启动。
    • .vbs 文件可以随时执行,不一定需要通过 Windows 任务计划程序执行。此脚本还假定 .vbs 文件与 excel 工作簿位于同一目录中。因此,为了解决问题,您可以随时执行 vbs 文件并确定没有发生什么。 excel能打开吗? excel会打开工作簿吗? excel会执行宏吗?它在哪一步失败?
    • 这是正确的,主机确实需要在其上安装 Excel,因此如果您在服务器上安装 excel,它将起作用。 Windows 任务计划程序的问题在于您实际上需要使用操作:“启动程序”,程序/脚本:“C:\Windows\SysWOW64\cscript.exe”,参数:“C:\Path_to_vbs\Your.vbs ", "Start In: "C:\Path_to_vbs"。我也会用它来更新答案。
    【解决方案2】:

    在 Windows 任务计划程序集中: 行动:启动程序 程序脚本:Excel.exe,路径用全引号括起来。 添加参数:要打开的工作簿,带引号的完整路径

    查看此链接:https://answers.microsoft.com/en-us/windows/forum/windows_8-performance/excel-files-can-not-be-opened-in-task-scheduler-in/aa6cf065-09ac-44d8-b6fb-a2f2ecd9b8cc

    在撞了我几个小时后为我工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-13
      • 2020-05-19
      • 2020-01-28
      • 2015-08-08
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多