- ベストアンサー
WSHスクリプトから動かしたEXCEL・VBAマクロでWSHスクリプトを停止する方法
WSHスクリプトからEXCELファイルのVBAマクロを呼び出し実行させます。 このマクロ内ではif関数で設定している条件の真偽を判定しています。偽の場合、マクロは終了しEXCELファイルは一旦閉じられます。そして一定時間がたったら、WSHスクリプトのループ処理で再び同じマクロが開かれif関数で条件判定を行います。 もし、真の場合、マクロの設定処理の実行・終了とともにWSHのループ処理も終了させたいのですが、VBAマクロからそのマクロを実行させているWSHスクリプトを停止させることは可能でしょうか。
- みんなの回答 (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
その他の回答 (1)
- papayuka
- ベストアンサー率45% (1388/3066)
WSHは良く解りませんが、、、 WSH側でブックを開き、マクロを走らせてるのですよね? マクロ内の判定にセルを使っているなら、そのセルを見てループを抜けるなり、開いたブックを閉じるなりを、WSH側でやれそうな気がしますが、、、
お礼
ありがとうございました。アドバイスを参考にifブロックの中にExit Doを入れたところWSHスクリプトのループを抜け出すことができました。