【问题标题】:How can you run an Excel macro through a schedule task如何通过计划任务运行 Excel 宏
【发布时间】:2012-01-18 17:39:16
【问题描述】:

我需要通过计划任务在 Excel 电子表格中运行宏。 我将工作定义如下:

"C:\Program Files\Microsoft Office\Office10\EXCEL.EXE" ""

问题在于,当作业启动时,Excel 会显示一个弹出窗口并询问我们是否要禁用/启用宏,这会阻止作业的执行。

如何在无需手动点击启用宏的情况下运行此宏?

【问题讨论】:

标签: excel vba


【解决方案1】:

编写一个简短的 vbscript 来启动 Excel,加载您的工作簿并使用 Application.Run 运行宏。让您的计划任务运行 vbscript。

例如:http://www.mrexcel.com/forum/showthread.php?t=302970

【讨论】:

  • +1 最佳方法。值得在 vbs 中重新编码宏以确保代码运行,即解决启用宏的问题。
  • 脚本似乎可以工作,但不会阻止“启用宏”提示。我认为这可能与我工作场所安装的公司安全策略有关?
【解决方案2】:

您没有指定 Excel 的版本或 Windows(或 Macintosh)的版本,因此我将指定我在 Windows 7 Ultimate 64 位上使用 Office 32 位的 Excel 2010... em>


如果您想保持工作簿打开并在指定时间运行代码,稍后再试试这个。

在您的项目中插入一个新的代码模块 - 或 - 使用您在项目中已有的代码模块。

如下图创建一个调度器子例程:

Sub Scheduler()

'-- RUNS SUB(S) (OR FUNCTIONS) AT TIME SCHEDULED.

    Application.OnTime TimeValue("11:46:40"), "TheScheduledSub"

End Sub

创建要运行的子例程(或函数)。这是此示例的示例:

Sub TheScheduledSub()

    Debug.Print "TheScheduledSub() has run at " & Time

End Sub

Scheduler() 将在由 TimeValue 定义的 Scheduler() 中指定的确切时间执行 TheScheduledSub()。你可以阅读更多关于TimeValuehere的信息。

您可能会传递您希望 Scheduler() 子程序执行子程序或函数的时间值作为子程序中的参数。

比方说,从现在开始,您可能会运行不到 5 个小时。 IE。 Application.OnTime Now + TimeValue("05:00:00"), "TheScheduledSub"

或者也许是从现在开始的一天?玩弄它。

我确实让两个潜艇在不同的时间执行。我也尝试同时执行两个。我对同时执行两个不同的 sub 的经验是,第二个 sub 似乎在第一个之前执行,但我还没有完全探索它。所以YMMV。

我认为 Excel VBA 不支持多线程,因此请记住这一点。我正在从 Office 套件运行 32 位 Excel 2010。不确定 64 位 Office Excel 的行为方式或任何其他版本或平台。无论如何,多线程/多任务 Excel VBA 不是您要求的,但需要考虑。

看到这个问题和上面玩的我能想到一些我想尝试自己的想法!

【讨论】:

    【解决方案3】:

    您可以尝试降低excel的安全级别,以避免在启动excel时弹出此问题。

    【讨论】:

      【解决方案4】:

      您还可以使用工作簿打开和调用宏。只需让计划任务打开工作簿,宏就会在工作簿打开时运行。

      【讨论】:

        【解决方案5】:

        另外,我发现有一个好主意

        Application.DisplayAlerts = False

        在开始时禁用任何可能在运行时中断宏的弹出消息。

        或观看教程视频: http://youtu.be/lFSgV2gym9g

        【讨论】:

          猜你喜欢
          • 2014-07-30
          • 2020-01-28
          • 2020-05-19
          • 2022-10-13
          • 1970-01-01
          • 2016-11-29
          • 2013-08-18
          • 2015-08-08
          • 1970-01-01
          相关资源
          最近更新 更多