从任务计划程序启动 excel 正在工作,现在失败
Posted
技术标签:
【中文标题】从任务计划程序启动 excel 正在工作,现在失败【英文标题】:Start excel from Task Scheduler was working, now fails 【发布时间】:2013-02-24 16:31:54 【问题描述】:我已经使用任务计划程序以及 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
【问题讨论】:
欢迎来到Stack Overflow。在写得很好的第一个问题上+1。您是在 XP 或 Win7(不是服务器)上运行它吗?当你在没有myExcelWorker.DisplayAlerts = False
的情况下调试它时,excel 是否会提示发生了什么?
它在我的旧 Windows 98 SE 计算机上运行。它根本没有显示任何错误信息。但是黑色窗口只是闪烁,我不知道如何捕获错误。我将 DisplayAlerts=False 与其他 UI 行一起注释掉,结果始终完全相同。
在Excel宏的vb脚本中是否失败?您验证路径是否正确?
嗯,路径是正确的。什么都没有改变,比如我没有移动我的文件。我想,它没有进入 Excel,但我不知道如何确定。
我照你说的做了。它到了这一行:myExcelWorker Run strMacroName。我相信它开始运行我的程序。一旦启动,我的程序将运行几个小时。所以我在vbs中没有看到任何错误。我想做的另一件事是我为 cscript 和我的 RunExcel.vbs 发出了运行命令。然后黑色窗口闪烁约 1 秒。
【参考方案1】:
我将在这里大胆猜测。
“它在我运行 cscript 时有效,但在任务运行时无效”让我认为这是一个权限问题。当您设置 Windows 计划任务时,您应该能够将其设置为以特定用户身份运行(并且还可以设置在用户未登录时是否运行)。我不确定 Win 98,但你能找出任务属性的含义吗?当您自己运行代码时,会使用您的 权限,并且计划任务可能正在使用无权运行它的用户。
如果您不进行任何更改,怎么会发生这种情况?我唯一能想到的是:
-
计划任务使用的用户已不存在或权限已更改
用户的密码过期日期最近已过
如果计划任务使用您的用户名,您是否将密码保存在任务属性中,然后最近更改了密码,但没有更新计划任务的密码?
另外,一些防病毒产品会停止使用一些 vbscripts。您是否可能在它停止工作之前安装了任何新东西?
检查错误可能来自哪里(希望这可行,因为我对 Win98 机器不是很熟悉):
-
找出哪个用户被设置为运行计划任务
以其他用户身份启动命令提示符(我认为它是 Shift+右键单击 --> 运行方式... [注意,我不了解 Windows 98,所以我祈祷你能做到这一点] )
从命令提示符运行 cscript:
C:\>cscript <dir>\myscript.extension \I
(注意,\I
是交互模式,应该会显示错误 (see here for more info)
我真的希望这会有所帮助。我会把它放在评论中,但它的文字太多了。
【讨论】:
感谢您的建议,joseph4tw。我会调查并告诉你。但是 Win 98 没有用户。此外,TaskScheduler 会启动它。我相信 cscript 没有找到我的 RunExcel.vbs 文件。就像我说的,既然我已经做到了这一步,我会做一些进一步的测试。 @RoseAb 我明白了。您是否尝试过只是重新创建任务而不是试图了解它为什么不起作用? 这是我发现的。我运行 wscript 而不是 cscript,这向我显示了错误。错误是“找不到脚本引擎 VBScript ...”我正在互联网上寻找解决方案。有人说运行“regsvr32 VBScript”并给出错误-RegSvr32 LoadLibrary(VBScript) 失败。 GetgLastError 返回 0x00000485。【参考方案2】:解决了!首先我做了一个运行命令并使用了 wscript。也可以按照 joseph4tw 的建议使用 cscript /I,但我不知道。
这向我显示了它找不到 VBScript 引擎的错误。一世 在互联网上查看,vbscript.dll 应该在 Windows/系统文件中 对于我的 98 电脑。它不在那里。我找到了网站 www.dll-files.com 并下载了该文件。然后我重新启动。然后我执行了一个运行命令来安装它,如下所示:运行 regsvr32 vbscript.dll。 它给出了一条成功消息,现在它可以工作了。
我相信这是由恶意软件引起的。我无法从我的 98 计算机上删除恶意软件,因为我无法运行任何较新的防病毒软件。
由于我的新 XP 计算机,我正在制作磁盘映像并使用 linux 恢复 CD。那个linux,我想会在98上运行,我希望我可以运行杀毒软件来清理那台电脑。
感谢大家的帮助,因为它让我找到了解决方案。
【讨论】:
很高兴能帮上忙! +1 发布详细解决方案【参考方案3】:我刚遇到同样的问题。
我制作了一个 .bat 文件,我在其中调用了 .exe 文件。
call filelocation/application.exe
最后,我从任务调度程序操作中调用了 .bat 文件。
效果很好。
【讨论】:
以上是关于从任务计划程序启动 excel 正在工作,现在失败的主要内容,如果未能解决你的问题,请参考以下文章
Windows 任务计划程序错误 101 启动失败代码 2147943785 [关闭]