9

私は約 1 年間、タスク スケジューラと 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

解決しました!最初に Run コマンドを実行し、wscript を使用しました。joseph4tw がアドバイスしたように cscript /I を使用することもできますが、それについては知りませんでした。

これにより、VBScript エンジンが見つからないというエラーが表示されました。インターネットで調べたところ、vbscript.dll は私の 98 コンピューターの Windows/System ファイルにあるはずです。そこにはありませんでした。サイト www.dll-files.com を見つけて、ファイルをダウンロードしました。その後、再起動しました。次に、Run コマンドを実行して、次のようにインストールしました: Run 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 に答える