Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


53057 / 76736 ←次へ | 前へ→

【28499】Re:メモリ使用量 補足2
発言  ichinose  - 05/9/8(木) 8:32 -

引用なし
パスワード
   ▼よろずや さん:
おはようございます。久しぶりですね!!

>実験に当たって、オブジェクトのメモリサイズばかり気にしてますが、
>何かの機能を呼び出せばその機能を実現するためのDLLが呼び出されます。
>(既にメモリ上にあればそれを使います)
>さらに、DLLがワークエリアとして使うメモリもあります。
>(必要量の数倍の領域を順繰りに使ったり、使用済みの領域を返却することもあります)
>それらの挙動は複雑ですので数回の実行では本当の事は分かりません。
↑、これは、
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=28448;id=excel

の「実験2だけでは、ADOの繰り返し処理が確実に安全か否かは
わからない」

ということでしょうか?
それはそうだと思いますし、私も思い当たるふしもあります。

例えば、Workbook.Open()で
繰り返し、同一のブックを呼び出し、閉じるを行った場合、

Sub main()
  Dim flno As Long
  Dim idx As Long
  Dim rbk As Workbook
  flno = FreeFile()
  Open ThisWorkbook.Path & "\memlog.csv" For Output As #flno
  Print #flno, "NO,使用メモリー,空きメモリー,トータル"
  For idx = 1 To 5000
   Set rbk = Workbooks.Open(ThisWorkbook.Path & "\readbk.xls")
   rbk.Close False
   With Application
     Print #flno, idx & "," & .MemoryUsed & "," & .MemoryFree & "," & .MemoryTotal
     End With
   Next idx
  Close #flno
End Sub

これ実は、ログファイルの結果を見ると使用メモリーは増えていません。
が繰り返し処理の動作が目視でわかるくらい鈍くなり、
最後はメモリー不足というエラーを起こします。
(Win98 & Excel2000(SP-3)でしか試していませんが)
よって、よろずや さんがおっしゃっている

「挙動は複雑ですので数回の実行では本当の事は分かりません」

とおりだと思います。

(ちなみにこれ、ループ中にDoevents入れることで回避できると思っていましたが、
今朝はテストできませんでした。)


「実験2だけでは、ADOの繰り返し処理が確実に安全か否かは
わからない」
は更なる実験や経験が必要かもしれません。

でも、実験2でもメモリー管理に問題があるとしたら、
ExcelでADO(Excelブック)の使用に???が付いてしまいますが・・。


ただ、私が投稿した実験1と実験2とでは、
使用メモリの動向は明らかに違っています
(Excel2002 Sp-3 Excel2002sp-3において)。

EXCEL_VBA中の下さんが「処理が重くなって」
とおっしゃった大きな原因ではないかという仮説は成り立ちます。

後は、前述のように

>・マクロと対象データが入っているブックを分けること。

>・ADOで処理している間は対象ブックを開かない

等の仕様で
EXCEL_VBA中の下さんが「処理が重くなって」
という現象が回避できるかということだと思います。

そして実験2については、私ももう少し考えてもます。

ご指摘、ありがとうございます。

0 hits

【28395】メモリ使用量 EXCEL_VBA中の下 05/9/5(月) 14:34 質問
【28396】Re:メモリ使用量 ちくたく 05/9/5(月) 14:53 発言
【28400】Re:メモリ使用量 小僧 05/9/5(月) 16:16 発言
【28401】Re:メモリ使用量 EXCEL_VBA中の下 05/9/5(月) 16:37 発言
【28403】Re:メモリ使用量 小僧 05/9/5(月) 17:39 発言
【28415】Re:メモリ使用量 ichinose 05/9/6(火) 7:59 発言
【28427】Re:メモリ使用量 EXCEL_VBA中の下 05/9/6(火) 14:41 発言
【28447】Re:メモリ使用量 実験1 ichinose 05/9/6(火) 20:28 発言
【28448】Re:メモリ使用量 実験2 ichinose 05/9/6(火) 20:49 発言
【28451】Re:メモリ使用量 補足 ichinose 05/9/7(水) 6:56 発言
【28452】Re:メモリ使用量 補足2 ichinose 05/9/7(水) 8:06 発言
【28453】Re:メモリ使用量 補足2 ちくたく 05/9/7(水) 8:47 回答
【28488】Re:メモリ使用量 補足2 よろずや 05/9/7(水) 22:33 発言
【28499】Re:メモリ使用量 補足2 ichinose 05/9/8(木) 8:32 発言
【28537】Re:メモリ使用量 補足2 よろずや 05/9/8(木) 19:29 発言
【28541】Re:メモリ使用量 補足2 小僧 05/9/8(木) 22:18 質問
【28542】Re:メモリ使用量 補足2 よろずや 05/9/8(木) 22:49 発言
【28544】Re:メモリ使用量 補足2 小僧 05/9/9(金) 0:12 質問
【28545】Re:メモリ使用量 補足2 ichinose 05/9/9(金) 1:36 発言
【28555】Re:メモリ使用量 補足2 小僧 05/9/9(金) 10:39 質問
【28570】Re:メモリ使用量 補足2 よろずや 05/9/9(金) 12:59 発言
【28597】Re:メモリ使用量 補足2 ichinose 05/9/9(金) 17:20 発言
【28598】Re:メモリ使用量 補足2 小僧 05/9/9(金) 17:47 お礼
【28402】Re:メモリ使用量 ちくたく 05/9/5(月) 16:51 発言

53057 / 76736 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free