9

我已经使用任务计划程序和 cscript 和 vbscript 运行我的 excel 2000 vba 程序大约一年了。几天前它停止了工作。我可以手动运行程序。每当任务计划程序启动它时,黑色窗口会显示大约 1-2 秒,然后关闭。

我试过注释掉错误处理,但我总是得到相同的结果。我尝试显示MsgBoxes,但结果仍然相同。

我在您的论坛上找到了一种更简单的方法,并且我尝试了相同的结果。

那么我需要做什么来调试呢?

这是我从这个论坛尝试的代码:

Option Explicit

Dim xlApp, xlBook

Set xlApp = CreateObject("Excel.Application")
'~~> Change Path here
Set xlBook = xlApp.Workbooks.Open("C:\My Documents\___Stocksfilter.xls", 0, True)
xlApp.Run "A_Pick"
xlBook.Close
xlApp.Quit

Set xlBook = Nothing
Set xlApp = Nothing

WScript.Echo "Finished."
WScript.Quit

这是我一直在使用的代码:

'Script to start my filter.xls program with named macro
'MsgBox "In RunExcel"

' Create an Excel instance
Dim myExcelWorker
Set myExcelWorker = CreateObject("Excel.Application") 

' Disable Excel UI elements
myExcelWorker.DisplayAlerts = False
myExcelWorker.AskToUpdateLinks = False
myExcelWorker.AlertBeforeOverwriting = False
myExcelWorker.FeatureInstall = msoFeatureInstallNone

' Open the Workbook 
Dim oWorkBook
Dim strWorkerWB
strWorkerWB = "C:\My Documents\___Stocks\filter.xls"

'MsgBox "Opening filter"

on error resume next 
Set oWorkBook = myExcelWorker.Workbooks.Open(strWorkerWB)
if err.number <> 0 Then
    ' Error occurred - just close it down.
    MsgBox "open Error occurred"
End If
err.clear
on error goto 0 

'MsgBox "Running macro"

Dim strMacroName
strMacroName = "A_Pick"
on error resume next 
' Run the macro
myExcelWorker.Run strMacroName
if err.number <> 0 Then
    ' Error occurred - just close it down.
    MsgBox "run macro Error occurred"
End If
err.clear
on error goto 0 

' Clean up and shut down
Set oWorkBook = Nothing
myExcelWorker.Quit
Set myExcelWorker = Nothing
Set WshShell = Nothing
4

3 回答 3

2

解决了!首先我做了一个运行命令并使用了 wscript。也可以按照 joseph4tw 的建议使用 cscript /I,但我不知道。

这向我显示了它找不到 VBScript 引擎的错误。我在互联网上查看,vbscript.dll 应该在我的 98 计算机的 Windows/系统文件中。它不在那里。我找到了网站 www.dll-files.com 并下载了该文件。然后我重新启动。然后我执行了一个运行命令来安装它,如下所示:运行 regsvr32 vbscript.dll。它给出了一个成功的信息,现在它可以工作了。

我相信这是由恶意软件引起的。我无法从我的 98 计算机上删除恶意软件,因为我无法运行任何较新的防病毒软件。

由于我的新 XP 计算机,我正在制作磁盘映像并使用 linux 恢复 CD。那个linux,我想会在98上运行,我希望我可以运行杀毒软件来清理那台电脑。

感谢大家的帮助,因为它使我找到了解决方案。

于 2013-03-10T19:16:53.180 回答
2

我将在这里大胆猜测。

它在我运行 cscript 时有效,但在任务运行时无效”让我认为这是一个权限问题。当您设置 Windows 计划任务时,您应该能够将其设置为以特定用户身份运行(并且还可以设置在用户未登录时是否运行)。我不确定 Win 98,但你能找出任务属性的含义吗?当您自己运行代码时,会使用您的权限,并且计划任务可能正在使用无权运行它的用户。

如果您不进行任何更改,怎么会发生这种情况?我唯一能想到的是:

  1. 计划任务使用的用户已不存在或权限发生变化
  2. 用户有密码到期日期,最近已过
  3. 如果计划任务使用您的用户名,您是否将密码保存在任务属性中,然后最近更改了密码,但没有更新计划任务的密码?

此外,某些防病毒产品会停止使用某些 vbscript。你有没有可能在它停止工作之前安装任何新东西?

检查错误可能来自哪里(希望这可行,因为我对 Win98 机器不是很熟悉):

  1. 找出哪个用户被设置为运行计划任务
  2. 以另一个用户身份启动命令提示符(我认为它是 Shift+右键单击 --> 运行方式... [注意,我不了解 Windows 98,所以我祈祷你能做到这一点])
  3. 从命令提示符运行 cscript:(C:\>cscript <dir>\myscript.extension \I注意,\I是交互模式,它应该显示错误(有关更多信息,请参见此处

我真的希望这会有所帮助。我会把它放在评论中,但它的文字太多了。

于 2013-03-09T22:29:47.607 回答
0

我刚刚遇到了同样的问题。

我制作了一个 .bat 文件,我在其中调用了 .exe 文件。

call filelocation/application.exe

最后,我从任务调度程序操作中调用了 .bat 文件。

它工作正常。

于 2018-12-11T10:30:10.673 回答