2013-03-09 282 views
9

我一直在使用任務計劃程序和cscript和vbscript運行我的excel 2000 vba程序大約一年。幾天前它停止工作。我可以手動運行程序。每當任務計劃程序啓動它時,黑色窗口將顯示約1-2秒,然後關閉。從任務計劃程序啓動excel工作,現在失敗

我試過評論錯誤處理,但我總是得到相同的結果。 我試過顯示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 
+0

歡迎來到[so]。 +1寫得很好的第一個問題。你是在XP還是Win7上運行(不是服務器)?並且當你在沒有 'myExcelWorker.DisplayAlerts = False'的情況下進行調試時,excel會提示正在發生什麼? – 2013-03-09 00:42:24

+0

它運行在我的舊的Windows 98 SE計算機上。它根本沒有顯示任何錯誤信息。但黑色的窗口只是閃爍,我不知道如何捕捉錯誤。我將DisplayAlerts = False與其他UI行一起註釋掉,結果總是完全相同。 – RoseAb 2013-03-09 01:04:25

+0

它在Excel宏的vb腳本中失敗了嗎?你有沒有證實路徑是正確的? – enderland 2013-03-09 01:30:10

回答

2

我要在這裏乘坐胡亂猜測。

它運行時,我運行cscript但不是當任務運行它」讓我覺得這是一個權限問題。當您設置Windows計劃任務時,您應該能夠將其設置爲以特定用戶身份運行(並且還設置在用戶未登錄時是否運行)。我不清楚Win 98,但你能找出Task屬性說的是什麼嗎?當您自己運行代碼時,將使用您的權限,並且計劃的任務可能使用的是沒有權限運行的用戶。

如果你沒有改變任何東西,這會發生什麼?我能想到的唯一的事情是,要麼:

  1. 表示,將預定任務使用已不存在或權限已更改
  2. 用戶有一個密碼過期的日期和它最近通過的用戶
  3. 如果計劃任務正在使用您的用戶名,您是否將密碼保存在「任務」屬性中,然後最近更改了密碼,但未更新計劃任務的密碼?

此外,某些防病毒產品會停止使用某些vbscript。在停止工作之前,你有沒有可能安裝任何新的東西?

要檢查,看看那裏的錯誤可能來自哪裏(希望這個作品,因爲我不是很熟悉Win98的機器):

  1. 找出哪些用戶設置爲運行計劃任務
  2. 作爲另一個用戶啓動命令提示符(我認爲這是Shift +右鍵單擊 - >運行爲... [注意,我不知道Windows 98,所以我越過我的手指,你可以這樣做])
  3. 從命令提示符運行cscript:C:\>cscript <dir>\myscript.extension \I(注意,\I是交互模式,它應該顯示錯誤(see here for more info

我真的希望這有助於。我會在評論中提到這一點,但它太多的文字。

+0

感謝您的建議,joseph4tw。我會調查並通知你。但是Win 98沒有用戶。此外,TaskScheduler啓動它。我相信cscript沒有找到我的RunExcel.vbs文件。就像我說的,我會做一些進一步的測試,現在我已經得到了很多。 – RoseAb 2013-03-10 16:44:30

+0

@RoseAb我明白了。你是否嘗試過重新創建任務,而不是試圖理解它爲什麼不起作用? – 2013-03-10 18:08:51

+0

這是我發現的。我運行了wscript而不是cscript,它向我顯示了錯誤。錯誤是「無法找到腳本引擎VBScript ...」我正在尋找解決方案。有人說運行「regsvr32 VBScript」,並給出了錯誤 - RegSvr32 LoadLibrary(VBScript)失敗。 GetgLastError返回0x00000485。 – RoseAb 2013-03-10 18:45:21

2

解決!首先我做了一個運行命令並使用了wscript。也可以使用cscript /我作爲joseph4tw建議,但我不知道這一點。

這給我看看它找不到VBScript引擎的錯誤。我在網上查了一下 ,vbscript.dll應該在我的98電腦的Windows/System文件 中。它不在那裏。我找到了該網站www.dll-files.com並下載了該文件。然後我重新啓動。然後我做了一個Run命令來安裝它,像這樣:運行regsvr32 vbscript.dll。 它給了一個成功的消息,現在它的工作。

我認爲這是由惡意軟件造成的。我無法從我的98計算機上獲取惡意軟件,因爲我無法運行任何新的防病毒軟件。

由於我的新XP電腦,我正在製作磁盤映像和使用Linux恢復光盤。那個linux,我想會在98上運行,我希望我可以運行殺毒軟件清理那臺電腦。

感謝大家的幫助,因爲它將我引向解決方案。

+1

我會放棄對Joseph4tw的幫助。 – 2013-03-10 23:10:44

+0

很高興幫助! +1發佈詳細的解決方案 – 2013-03-11 02:07:54

相關問題