過去ログ

                                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.で閉じているのだからメモリは解放されるハズと
思っていたのですが、解放されません。

何か解放する方法(命令)があるのでしょうか?
ご存じの方は是非教えて下さい★
 ───────────────────────────────────────  ■題名 : Re:メモリの解放  ■名前 : ichinose  ■日付 : 02/10/3(木) 17:21  -------------------------------------------------------------------------
   ▼モモコ さん:
こんにちは。
>初めまして、モモコと申します。
>
>大変困っているコトがあります。
>ExcelVBAでブックのOpenとCloseを繰り返す処理を作成しました。
>しかし、メモリの使用量が上がってブックが開けなくなります。
>
>説明すると以下のようになります。
>1.Book1.xlsからマクロでBook2.xlsを開く
>2.Book1.xlsからマクロでBook2.xlsを閉じる
>
>上記1.2.を繰り返すとメモリ使用量が膨らみ、開けなくなります。
>1.で開いたけど、2.で閉じているのだからメモリは解放されるハズと
>思っていたのですが、解放されません。
>
>何か解放する方法(命令)があるのでしょうか?
>ご存じの方は是非教えて下さい★
ループ中にDoeventsの1行をいれて試してみて下さい。
 ───────────────────────────────────────  ■題名 : 不精すぎました  ■名前 : ichinose  ■日付 : 02/10/3(木) 17:28  -------------------------------------------------------------------------
   ▼モモコ さん:
ちょっと、説明足りませんでした。
Sub test()
  For i = 1 To 1000
    Set bk = Workbooks.Open(Filename:="D:\My Documents\TESTエリア\book1.xls")
    bk.Close
    DoEvents
    Next
End Sub
一例です。
 ───────────────────────────────────────  ■題名 : Re:不精すぎました  ■名前 : モモコ <harada@ises.co.jp>  ■日付 : 02/10/8(火) 16:51  -------------------------------------------------------------------------
   ▼ichinose さん:
返信遅れちゃいました...
ごめんなさい。
全然不精じゃないですよ★

あれからいろいろ試してみました。
教えて頂いた"Doevents"でかなり解放されます★
すごいですね!"Doevents"って

でもでも、シートにコマンドボタン等のコントロールが
貼り付けてあるとやっぱり溜まってしまいます(;_;)
こればっかりは仕方無いのでしょうか?
 ───────────────────────────────────────  ■題名 : Re:不精すぎました  ■名前 : ichinose  ■日付 : 02/10/8(火) 18:50  -------------------------------------------------------------------------
   ▼モモコ さん:
こんばんは。
>あれからいろいろ試してみました。
>教えて頂いた"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
で試しましたが、大きい変化はありませんでしたが、意味が違ってますか?
 ───────────────────────────────────────  ■題名 : Re:不精すぎました  ■名前 : モモコ <harada@ises.co.jp>  ■日付 : 02/10/10(木) 9:47  -------------------------------------------------------------------------
   ▼ichinose さん:

こんにちは〜♪
ど〜してもダメだったのです(;_;)
なので、またブックを最初から作り直してみました。
そしたらうまく動きました★
結局何が原因かは分かりません...
コントロールとかの設定かしら( ̄〜 ̄)

でもでも〜、とにかく良かったです。
本当にありがとうございました。

それにしてもichinose さん詳しいのですね★
私はいつまでも初心者のままなのに...
 ───────────────────────────────────────  ■題名 : Re:メモリの解放  ■名前 : モモコ <harada@ises.co.jp>  ■日付 : 02/10/3(木) 17:52  -------------------------------------------------------------------------
   ▼ichinose さん:
>▼モモコ さん:
>こんにちは。
>>初めまして、モモコと申します。
>>
>>大変困っているコトがあります。
>>ExcelVBAでブックのOpenとCloseを繰り返す処理を作成しました。
>>しかし、メモリの使用量が上がってブックが開けなくなります。
>>
>>説明すると以下のようになります。
>>1.Book1.xlsからマクロでBook2.xlsを開く
>>2.Book1.xlsからマクロでBook2.xlsを閉じる
>>
>>上記1.2.を繰り返すとメモリ使用量が膨らみ、開けなくなります。
>>1.で開いたけど、2.で閉じているのだからメモリは解放されるハズと
>>思っていたのですが、解放されません。
>>
>>何か解放する方法(命令)があるのでしょうか?
>>ご存じの方は是非教えて下さい★
>ループ中にDoeventsの1行をいれて試してみて下さい。

早速試してみました★
メモリ使用量が10分の1くらいに減りましたっ!
でも完全には減らないのですね...
Excel自体も完全にはメモリを解放しないのかしら...?

ともあれ、これなら支障ないと思います。
本当にありがとうございました。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 182