• ベストアンサー

WSHスクリプトから動かしたEXCEL・VBAマクロでWSHスクリプトを停止する方法

WSHスクリプトからEXCELファイルのVBAマクロを呼び出し実行させます。 このマクロ内ではif関数で設定している条件の真偽を判定しています。偽の場合、マクロは終了しEXCELファイルは一旦閉じられます。そして一定時間がたったら、WSHスクリプトのループ処理で再び同じマクロが開かれif関数で条件判定を行います。 もし、真の場合、マクロの設定処理の実行・終了とともにWSHのループ処理も終了させたいのですが、VBAマクロからそのマクロを実行させているWSHスクリプトを停止させることは可能でしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

#1です。 ちょっと検証してみました。 BookA.xls の標準モジュールに Test マクロを書き、Cドライブに保存 Sub Test()   Randomize   Worksheets(1).Range("A1").Value = Int((2 * Rnd) + 1) End Sub 下記内容の BookA.vbs を何度か実行すると一瞬開いて閉じるか、開いたままになるかで分岐出来ましたよ。 Set objExcelApp = CreateObject("Excel.Application") objExcelApp.visible=True Set objWbk = objExcelApp.Workbooks.Open("C:\BookA.xls",True) objExcelApp.Run("BookA.xls!Module1.Test") if objWbk.Worksheets(1).Range("A1").Value = 1 then   objExcelApp.DisplayAlerts = False   objWbk.Close   objExcelApp.Quit End if

phy0
質問者

お礼

ありがとうございました。アドバイスを参考にifブロックの中にExit Doを入れたところWSHスクリプトのループを抜け出すことができました。

その他の回答 (1)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

WSHは良く解りませんが、、、 WSH側でブックを開き、マクロを走らせてるのですよね? マクロ内の判定にセルを使っているなら、そのセルを見てループを抜けるなり、開いたブックを閉じるなりを、WSH側でやれそうな気がしますが、、、

関連するQ&A