Excel VBA質問箱 IV

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

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


29932 / 76738 ←次へ | 前へ→

【52079】二次元配列からCSVへの出力
質問  くが  - 07/10/19(金) 11:54 -

引用なし
パスワード
   ご相談させてください。
既存の数万レコード、数十フィールド(各レコードによって違う)の
CSVファイルの第一フィールドだけに対して文字列の置換をして、
再びCSVファイルとして出力したいのです。
そこでとりあえず置換までは以下のようなコードで上手く行きました。

Option Base 1
Sub a()
  Dim fso As Object
  Set fso = CreateObject("Scripting.FileSystemObject")
  Dim ffile As Object
  Dim csvName As String
  csvName = パス\ファイル名

  Dim TmpData As Variant
  Dim DataLine As Variant
  Dim LastRow As Long
  Dim LastCol As Long
  Dim c As Long
  Dim R As Long
  Const ForReading = 1
  
  ' 配列の上限設定
  Set ffile = fso.OpenTextFile(csvName, ForReading)
  LastCol = 1
  Do Until ffile.AtEndOfStream
    DataLine = Split(ffile.Readline, ",")
    If LastCol < UBound(DataLine) Then LastCol = UBound(DataLine)
  Loop
  LastRow = ffile.Line
  ffile.Close
  ReDim TmpData(1 To LastRow, 1 To LastCol)
  
  ' 2次元配列に格納
  Set ffile = fso.OpenTextFile(csvName, ForReading)
  R = 1
  Do Until ffile.AtEndOfStream
    DataLine = Split(ffile.Readline, ",")
    For c = 1 To UBound(DataLine)
      TmpData(R, c) = DataLine(c - 1)
    Next
    R = R + 1
  Loop
  ffile.Close
  
  For R = 1 To LastRow
    置換え処理
  Next
End Sub

ここまででTmpDataには置換え処理が終わったデータが入っているのですが、
それをそのまま文字列に""囲いをつけたりせずそのままCSVファイルで
なるべく高速で出力するにはどのような手段を使えばいいでしょうか。

ADOやDOAを使えば高速に処理できると聞いたのですが、
使ったことが無いのでどういったものか良く判りません。
2 hits

【52079】二次元配列からCSVへの出力 くが 07/10/19(金) 11:54 質問
【52081】Re:二次元配列からCSVへの出力 neptune 07/10/19(金) 14:20 発言
【52086】Re:二次元配列からCSVへの出力 くが 07/10/19(金) 23:37 お礼

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