Excel VBA質問箱 IV

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

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


28041 / 76732 ←次へ | 前へ→

【54000】ExcelVBAの配列の開放について
質問  hiro  - 08/2/19(火) 21:31 -

引用なし
パスワード
   毎回お世話になっております。
また、ご質問させてください。

数十万レコードを処理する必要のあるVBAプログラムを作っています。
現在、私がやっている方法が以下のようなものです。
--------------------------------------------------------------------------
1.配列宣言
  dim array as Variant
2.CSVファイルをワークブックとして開く。
  Workbooks.OpenText filename:=csvName, DataType:=xlDelimited, _
  Comma:=True
3.CSVファイルの中身を全て配列に格納する。
  array = Workbooks("data01.csv").Worksheets(1).Range("A1:S65000")
4.配列を、目的のシートに範囲指定で貼り付ける。
  Workbooks("result.xls").Worksheets(x).Range("A1:S65000") = array
5.配列を初期化する。
  Erase array
2.〜5.を、csvファイルの数だけ繰り返す。
--------------------------------------------------------------------------

ちなみにcsvファイルは65000件毎に通し番号付きのファイル名で存在します。
csvファイルをシート別にひとつのxlsファイルに読み込んでから、本筋の処理を行う流れになっています。なので、csvファイルが10個あれば、それらをsheet1からsheet10にコピーするといった感じです。

このやり方で、120万件ほどのデータを処理しようとすると「メモリ不足です」の警告が出てしまいます。

配列の中身の貼り付けが終る毎に、Erase arrayで配列の初期化をしているのですが、Eraseでは配列の開放にはならないのでしょうか。

ご教授よろしくお願いします。

(何か足りない情報がございましたら、追記させていただきますのでご指摘ください。
2 hits

【54000】ExcelVBAの配列の開放について hiro 08/2/19(火) 21:31 質問
【54002】Re:ExcelVBAの配列の開放について neptune 08/2/19(火) 22:11 回答
【54010】Re:ExcelVBAの配列の開放について hiro 08/2/20(水) 0:51 質問
【54026】Re:ExcelVBAの配列の開放について neptune 08/2/20(水) 15:17 回答
【54035】Re:ExcelVBAの配列の開放について Hirofumi 08/2/20(水) 20:15 回答
【54038】Re:ExcelVBAの配列の開放について neptune 08/2/20(水) 22:17 発言
【54164】Re:ExcelVBAの配列の開放について hiro 08/2/27(水) 10:53 お礼

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