Excelファイルのデータを効率よく読み込んで、修正して保存するには?

解決


ぶるー  2004-08-18 10:27:47  No: 115697  IP: [192.*.*.*]

こんにちわ、よろしくお願いします。
現在Excelのデータ(約1000件位)(16桁位)があるのですがこのデータを修正して、保存したいと思っています。

日付           2004/8/17  →  20040817
半角を全角に  ウラシマタロウ  →  ウラシマタロウ

このデータをすべて変換して、新しい名前にして保存したいと思っています。

このときに、DAOを使って読み込み→変換→次のレコード  ⇒  名前をつけて保存がいいのか、通常に
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets.Add
xlSheet.Cells(i, n)
で読み込んで変換としたほうがいいのか、それとも他の方法がいいかレスポンスと安定性はどうでしょうか?

ちなみに一度CSVに落としてから、変換という方法も考えましたが…、1クッション多いのでいまいちかな?と思っています。

すいませんが、よろしくお願いします。

編集 削除
特攻隊長まるるう  2004-08-18 11:33:22  No: 115698  IP: [192.*.*.*]

Cells で1つ1つ読み取るのは時間がかかります。
更に1つ1つ書き込みしてしまうと極端に遅くなります。
配列で一括して読み書きしてみて下さい。
[VB6.0]
Private Sub ExcelWrite(ByRef Datax() As Variant)
    xlSheet.Range("$A$1").Resize(UBound(Datax, 1), UBound(Datax, 2)).Value = Datax
End Sub
Private Function ExcelRead(ByVal Rows As Integer, Cols As Integer) As Variant()
    ExcelRead = xlSheet.Range("$A$1").Resize(Rows, Cols).Value
End Function

DAO とのパフォーマンス比較は…質問なんかしなくても
時間を計れば分かる事じゃないんですか?

編集 削除
ぶるー  2004-08-18 13:40:27  No: 115699  IP: [192.*.*.*]

特攻隊長まるるう様

早速の回答ありがとうございます。
確かにDAOとのパフォーマンスの比較は時間を計ればわかりますね。

今までは、セル単位で読み取り、書き込みをしていたので、配列で一括という方法は知りませんでした。(まだまだ勉強が必要です。)
プログラムの内容をもう少し詳しく教えていただけないでしょうか?

ExcelRead
は読み込み部分でデータの件数(Rows)と桁数(Cols)がいくつかを求めているのでしょうか?

ExcelWrite
は書き込み部分で、開いたときに配列を作っているのでしょうか?
この二つをどう使ったらよいのかわからなくて、申し訳ないですが、よろしくお願いします。

編集 削除
特攻隊長まるるう  2004-08-18 16:00:34  No: 115700  IP: [192.*.*.*]

↓こっちのサンプル見て下さい
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200408/04080071.txt

編集 削除
ぶるー  2004-08-19 10:18:55  No: 115701  IP: [192.*.*.*]

ありがとうございます。
サンプルを見て、やってみます。

ありがとうございます。

編集 削除