|
ご相談させてください。
既存の数万レコード、数十フィールド(各レコードによって違う)の
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を使えば高速に処理できると聞いたのですが、
使ったことが無いのでどういったものか良く判りません。
|
|