Page 182 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼メモリの解放 モモコ 02/10/3(木) 17:13 ┗Re:メモリの解放 ichinose 02/10/3(木) 17:21 ┣不精すぎました ichinose 02/10/3(木) 17:28 ┃ ┗Re:不精すぎました モモコ 02/10/8(火) 16:51 ┃ ┗Re:不精すぎました ichinose 02/10/8(火) 18:50 ┃ ┗Re:不精すぎました モモコ 02/10/10(木) 9:47 ┗Re:メモリの解放 モモコ 02/10/3(木) 17:52 ─────────────────────────────────────── ■題名 : メモリの解放 ■名前 : モモコ <harada@ises.co.jp> ■日付 : 02/10/3(木) 17:13 -------------------------------------------------------------------------
初めまして、モモコと申します。 大変困っているコトがあります。 ExcelVBAでブックのOpenとCloseを繰り返す処理を作成しました。 しかし、メモリの使用量が上がってブックが開けなくなります。 説明すると以下のようになります。 1.Book1.xlsからマクロでBook2.xlsを開く 2.Book1.xlsからマクロでBook2.xlsを閉じる 上記1.2.を繰り返すとメモリ使用量が膨らみ、開けなくなります。 1.で開いたけど、2.で閉じているのだからメモリは解放されるハズと 思っていたのですが、解放されません。 何か解放する方法(命令)があるのでしょうか? ご存じの方は是非教えて下さい★ |
▼モモコ さん: こんにちは。 >初めまして、モモコと申します。 > >大変困っているコトがあります。 >ExcelVBAでブックのOpenとCloseを繰り返す処理を作成しました。 >しかし、メモリの使用量が上がってブックが開けなくなります。 > >説明すると以下のようになります。 >1.Book1.xlsからマクロでBook2.xlsを開く >2.Book1.xlsからマクロでBook2.xlsを閉じる > >上記1.2.を繰り返すとメモリ使用量が膨らみ、開けなくなります。 >1.で開いたけど、2.で閉じているのだからメモリは解放されるハズと >思っていたのですが、解放されません。 > >何か解放する方法(命令)があるのでしょうか? >ご存じの方は是非教えて下さい★ ループ中にDoeventsの1行をいれて試してみて下さい。 |
▼モモコ さん: ちょっと、説明足りませんでした。 Sub test() For i = 1 To 1000 Set bk = Workbooks.Open(Filename:="D:\My Documents\TESTエリア\book1.xls") bk.Close DoEvents Next End Sub 一例です。 |
▼ichinose さん: 返信遅れちゃいました... ごめんなさい。 全然不精じゃないですよ★ あれからいろいろ試してみました。 教えて頂いた"Doevents"でかなり解放されます★ すごいですね!"Doevents"って でもでも、シートにコマンドボタン等のコントロールが 貼り付けてあるとやっぱり溜まってしまいます(;_;) こればっかりは仕方無いのでしょうか? |
▼モモコ さん: こんばんは。 >あれからいろいろ試してみました。 >教えて頂いた"Doevents"でかなり解放されます★ >すごいですね!"Doevents"って > >でもでも、シートにコマンドボタン等のコントロールが >貼り付けてあるとやっぱり溜まってしまいます(;_;) >こればっかりは仕方無いのでしょうか? シートにコマンドボタン等のコントロールが貼り付けてあるブックを開いたり、閉じたりした場合ということですか? '==================================== Sub test() Dim bk As Workbook With ThisWorkbook.Worksheets(1) .Cells(1, 2).Value = Application.MemoryUsed For i = 2 To 100 Set bk = Workbooks.Open(Filename:=ThisWorkbook.Path & "\book1.xls") ' ↑このブックにコントロールが貼り付けてあります bk.Close DoEvents .Cells(i, 2).Value = Application.MemoryUsed Next i End With End Sub で試しましたが、大きい変化はありませんでしたが、意味が違ってますか? |
▼ichinose さん: こんにちは〜♪ ど〜してもダメだったのです(;_;) なので、またブックを最初から作り直してみました。 そしたらうまく動きました★ 結局何が原因かは分かりません... コントロールとかの設定かしら( ̄〜 ̄) でもでも〜、とにかく良かったです。 本当にありがとうございました。 それにしてもichinose さん詳しいのですね★ 私はいつまでも初心者のままなのに... |
▼ichinose さん: >▼モモコ さん: >こんにちは。 >>初めまして、モモコと申します。 >> >>大変困っているコトがあります。 >>ExcelVBAでブックのOpenとCloseを繰り返す処理を作成しました。 >>しかし、メモリの使用量が上がってブックが開けなくなります。 >> >>説明すると以下のようになります。 >>1.Book1.xlsからマクロでBook2.xlsを開く >>2.Book1.xlsからマクロでBook2.xlsを閉じる >> >>上記1.2.を繰り返すとメモリ使用量が膨らみ、開けなくなります。 >>1.で開いたけど、2.で閉じているのだからメモリは解放されるハズと >>思っていたのですが、解放されません。 >> >>何か解放する方法(命令)があるのでしょうか? >>ご存じの方は是非教えて下さい★ >ループ中にDoeventsの1行をいれて試してみて下さい。 早速試してみました★ メモリ使用量が10分の1くらいに減りましたっ! でも完全には減らないのですね... Excel自体も完全にはメモリを解放しないのかしら...? ともあれ、これなら支障ないと思います。 本当にありがとうございました。 |