【问题标题】:Launch a macro when Excel is offExcel 关闭时启动宏
【发布时间】:2017-04-03 13:32:20
【问题描述】:

Tl:dr 想看看有没有办法在 Excel 未打开时启动 Excel VBA 宏。

长版:我有一个宏,可以从一组特定的网站获取数据,并相应地更新电子表格。唯一的问题是数据在不方便的时间更新,即周一早上 05.00(格林威治标准时间)和周四早上 01.15(格林威治标准时间)。

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

【问题讨论】:

  • 创建一个 VbScript 文件并编写代码来运行您的 excel 宏并安排它在所需的时间运行。
  • 这个question and its answers 应该有帮助。
  • 是的,使用 Windows TASK SCEDULER 来调用进程。应该是一个相当简单的过程,只需包含启动程序、应用程序名称、EXCEL 和文件名(包括路径)。确保 XLS 在 THISWORKBOOK 中有一个 WORKBOOK_OPEN 子例程。如果您愿意,我可以在正式的答案中说明这一点。请告诉我。

标签: excel vba


【解决方案1】:

更简单 - 无需 VB 脚本。

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

您必须搜索 Excel.exe - 因为我的版本,我在这里找到了它:

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

接下来提供参数作为宏嵌入 Excel 文件的完整路径。 为了我的测试,我在我的桌面上调用了一个文件:

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

然后确保您的工作簿在ThisWorkbook 模块中有一个Workbook_Open 过程来触发您的代码:

【讨论】:

    【解决方案2】:

    如果我是你,我会这样:

    首先,我安装一个第三方程序,并在需要时打开 XLSM 文件。

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

    【讨论】:

      【解决方案3】:

      最好的方法是编写一个 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 中所写。

      【讨论】:

        猜你喜欢
        • 2023-03-18
        • 1970-01-01
        • 2017-12-18
        • 2019-03-13
        • 2019-11-25
        • 2017-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多