質問: $App.Visible Write-host "切れてない" } catch { Write-host "切れてる" } ``` ### 補足情報(FW/ツールのバージョンなど) Win10
回答: PowerShellは触ったことがないので、外しているかもしれませんが、PowerShellでオブジェクトの管理をやってくれる仕組みがないのであれば、ご自身で参照カウンタを管理するしかないのではないでしょうか。 以下PowerShell書けないので概念的な説明になりますが、 スクリプト内に参照カウンタ用の変数を持たせておき、_New_Excelを 1. カウンタが0の場合Excelオブジェクトを作成して、カウンタをインクリメント 2. カウンタが1以上の場合、カウンタをインクリメントして、Excelオブジェクトを新しく作らずに、前回作ったオブジェクトを渡す という処理にします。同様に_ComQuitについても 1. カウンタが1以上の場合、カウンタをデクリメントするのみ 2. デクリメントの結果カウンタが0になった場合にオブジェクトを破棄する として、Excelオブジェクトを使う場合、必ず_New_Excelを呼んで、使い終わったら_ComQuitを呼ぶようにしおけば、多少複雑な分岐やネスト処理があっても、参照用カウンタをチェックすることで、オブジェクトが残っているかどうか判別できると思います。 VC++ではこういうことをやってくれるラッパークラスがあるのですが、PowerShellでクラスが使えるのであれば、そいうクラスを作って、クラス内部で参照カウンタの管理を任せてもいいと思います。