接続中インスタンスの取得方法
ExcelVBAにてオブジェクトに他ブックやIEを格納して使用していますが、
インスタンスの解放がうまくいかず、状態を調査したいと思っています。
マクロのおいてあるワークブックから、接続中インスタンスをまとめて取得する方法を教えてください。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/06/13 10:29:20
  • 終了:--

回答(2件)

id:dothan No.1

どたん回答回数65ベストアンサー獲得回数122011/06/13 10:50:27

GetObject関数を使って、1つずつNothingにしていけばいいのではないでしょうか。

id:windofjuly No.2

windofjuly回答回数656ベストアンサー獲得回数2192011/06/13 11:25:09

Nothingを実施するとExcelVBAの管理下を離れ、OS管理下でガベージコレクションを待つという形になりますので「GetObject関数を使って、1つずつNothing」は使えない手ですし、OS管理下に制御が移ってしまったものの制御はVBAの範疇ではなくVBの範疇となりますので、大げさな話になってしまいます

 

具体的にどのようなコードを書いていて、うまくいかないとはどのような状態を指しているのかが判らないのでヒントのみとりあえず書きますが、ループ処理の中でSet と Nothing を繰り返しているのだとすれば、そのルーチンが回っている間はガベージコレクションは実施されないので、トリガ駆動にすることを考えるか、インスタンスの生成を最小限にする(作成したインスタンスを使いまわす)ことを考えたほうがよろしいでしょう

  • id:taknt
    調査するひとつの手段として どたんさんのやり方は 有効かと思います。

    ま、それで わからなければ あとは windofjulyさんが言うように 別の手段をとるしかないでしょうね。

トラックバック

トラックバックはまだありません

ご利用にはGoogle Chromeのインストールが必要です。

ご利用にはGoogle Chromeのインストールが必要です。

Twitter・Facebook連携キャンペーン実施中!Amazonギフト券を10名様に!6/26(日)まで 人力検索はてな twitterで新着質問をチェック!