プロが教える店舗&オフィスのセキュリティ対策術

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

もし、真の場合、マクロの設定処理の実行・終了とともにWSHのループ処理も終了させたいのですが、VBAマクロからそのマクロを実行させているWSHスクリプトを停止させることは可能でしょうか。

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/08/26 09:54

WSHは良く解りませんが、、、



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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!