ActiveX 経由で IE から 出力してる Excel が Windows7 になったらブラウザの裏に隠れてしまうようになった時の対処メモ

似たような事象はあるらしいようだが・・

ブラウザ上で動かす VBScriptJScript からでは根本的な解決はできなさそう・・・

ただ処理の中で、WEBサーバ上にあるファイルをオープンする処理がある場合は、オープン中のダイアログが表示され、その際エクセルがアクティブになってると前画面に表示されるので、これをうまく利用すると良い。

注意点としては、出力処理が終了してもオープンしたファイルの格納先変数が生きちゃってる場合は、キャッシュが効いてダイアログが表示されないケースがあるので、明示的に set xxx = Nothing するか、ローカル変数として定義する必要がある。

Class GenerateReportClass

    Public LAYOUTBOOK

    Sub GenerateReport()

        Set OBJXLS  =   CreateObject("Excel.Application")
        OBJXLS.Visible	=	true
        Set OBJWSH	= CreateObject("WScript.Shell")
        OBJWSH.AppActivate OBJXLS

        set LAYOUTBOOK  =   OBJXLS.workbooks.open("http://xxx/xxx.xls")

        'これも大事
        OBJXLS.Visible	=	false
        OBJXLS.Visible	=	true


        '出力処理・・・


        LAYOUTBOOK.close

        'これが無いとworkbooks.openでダイアログが表示されない
        set LAYOUTBOOK = Nothing

    End Sub

End Class