- ベストアンサー
EXCELのVBAで作業ファイルを閉じてもメモリの解放をしなくて困っています
いろいろネットで調べてみたのですが、わからなかったので お願いします。 EXCEL2003のVBAで作業ブックを作り、色々計算した 結果を1つのシートにまとめ、結果シートを新たに作ったブックに コピーします。 その後、作業ブックは保存せずに閉じるのですが、作業ブックで 増えたメモリがブックを閉じても減りません。 自分が調べた限りでは、こういう事例はありませんでした。 作業ブックを閉じても、作業ブックのメモリは解放されないもの なんでしょうか。 どんどん、メモリが増えたままになって困っております。 なんせ、初心者なので、いまひとつわかっておりません。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
コードがないので、良くわかりませんが、 タスクマネージャーを見ながら一行ずつデバッグすると どこでプロセスが起動して終了しているのかがわかるはずです。 以下、参考になるかわかりませんがHPを・・・。
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
#3 の補足です。 >自分が調べた限りでは、こういう事例はありませんでした。 >作業ブックを閉じても、作業ブックのメモリは解放されないもの >なんでしょうか。 >どんどん、メモリが増えたままになって困っております。 メモリが開放されないのではなくて、単に、メモリの量が増えているのではないでしょうか?それは、#3で述べた、メモリ枠の限界まで、使用した量は確実に増えていきます。それは、しかたがありませんし、それを気にしてもどうしようもありません。 要するに、Excelのアプリケーションを終了して残るか、残らないかだけです。それを確認してください。
お礼
早速の返答ありがとうございます。 excelのアプリケーションを終了させれば メモリは解放されます。ということは どうしようもないという結論もあるということですね。 すみません、setステートメントも よく理解していない者ですので、 このあたりの解放方法を探ってみます。 コードについてはどのあたりがあやしいという 見当がつかないので、見当がつき次第 また連絡します。 ありがとうございました。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 通常、単独で使っている分にはありません。COMやオートメーションサーバーで用いなければ、そのようなことはありません。単独でExcelを使用する場合、あらかじめ、Excel側がメモリの枠を取ってから、VBAなどが使われますので、本体、Application が終わると、残らないようになっています。つまり、本体自体が終わっていないということになるかもしれません。 個々のプロセスが残るのは、.Net で、別に、COM開放プログラムが必要です。 言葉だけで、回答者に想像させても、限界があります。とにかくコードを見せてください。
- imogasi
- ベストアンサー率27% (4737/17069)
Set (オブジェクト)=Nothing を入れるべきところに入れてないのでは。 http://www.moug.net/tech/exvba/0150027.htm を参考に。
お礼
早速の返答ありがとうございます。 setステートメントの意味がいまひとつ 理解できておりません。 すみません。setをもう少し勉強します。 理解できたらまた連絡します。 ありがとうございました。
お礼
早速の返答ありがとうございます。 しかしながら、参考のHPがちんぷんかんぷんです。 (すみません。日曜大工的にVBAを独学でやって いますので) HPのどこがわからないかが分からない状態ですので、 とりあえず、このHPを2、3日かけてじっくり がんばって理解します。 わかり次第また連絡致します。 ありがとうございました。