【问题标题】:VBS Doesn't stop runningVBS 不会停止运行
【发布时间】:2015-10-02 20:03:24
【问题描述】:

我有一个计划任务,它启动一个 vb 脚本,该脚本又在 excel 中运行一个宏。一切运行良好(因为我得到了我想要的结果),但是,计划任务仍然“运行”,因此第二天早上不会再次开始。 VB脚本如下:

Option Explicit

Dim xlApp, xlBook

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\MyPath\My File.xlsm", 0, True)
xlApp.Run "myMacro"
xlBook.Close
xlApp.Quit

Set xlBook = Nothing
Set xlApp = Nothing

WScript.Quit

宏的结尾(所有前面的代码都可以正常工作并根据需要保存我的 csv 输出):

        Workbooks("My File.xlsm").Activate
        Worksheets("Outputs").Select
        'ActiveWorkbook.Save
        'ActiveWorkbook.Close - this line cause vbs to fail after creating my csv
        Application.ScreenUpdating = True
        Application.DisplayAlerts = True

    End Sub

如何终止 VB 脚本以停止运行计划任务?

【问题讨论】:

  • 如果CSV已经保存,是否可以使用ActiveWorkbook.Close False关闭工作簿而不进一步保存?
  • 不幸的是,脚本仍然失败并出现错误 800APC68 Unknown Runtime Error。如果我删除那条线,那就是它不会出错.....但也不会停止!!!
  • 如果您的交互式脚本在任务计划程序之外但不能在其中工作,请查看以下内容:http://blogs.technet.com/b/askperf/archive/2015/02/18/help-my-scheduled-task-does-not-run.aspx

标签: excel vba vbscript scheduled-tasks


【解决方案1】:

不幸的是,你意识到:

    Workbooks("My File.xlsm").Activate
    Worksheets("Outputs").Select
    'ActiveWorkbook.Save
    'ActiveWorkbook.Close - this line cause vbs to fail after creating my csv
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True

由于 xlBook 对象正在尝试关闭已经关闭的工作簿,因此会给您一个错误。我相信,如果您将 VBScript 更新为:

Option Explicit

Dim xlApp, xlBook

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\MyPath\My File.xlsm", 0, True)
xlApp.Run "myMacro"
'xlBook.Close Remove this line
xlApp.Quit

Set xlBook = Nothing
Set xlApp = Nothing

WScript.Quit

并添加回 ActiveWorkbook.Save 和 ActiveWorkbook.Close 行,您的 VBScript 和 Excel 应用程序应该正确关闭。

【讨论】:

    猜你喜欢
    • 2016-03-29
    • 1970-01-01
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    相关资源
    最近更新 更多