行に 5 つの値を持つ .CSV ファイルがあります。行の先頭/末尾/中間にもう 1 つの値を追加するようにファイルを変更したいと考えています。
.CSV ファイルに一連の値を含む新しい行を追加する方法は?
これを簡単な方法で行うにはどうすればよいですか?
このコードは役立つかもしれませんが、これは答えではありませんが、役立つでしょう
Dim line As String
Dim arrayOfElements() As String
Dim linenumber As Integer
Dim i As Integer
Dim opLine As String
Dim fso As New FileSystemObject
Dim ts As TextStream
line = ""
Open strPath For Input As #1 ' Open file for input
Do While Not EOF(1) ' Loop until end of file
linenumber = linenumber + 1
Line Input #1, line
arrayOfElements = Split(line, "|")
If Not linenumber = 1 Then
If UBound(arrayOfElements) = 2 Then
line = line & "|x|y"
opLine = opLine & line & vbCrLf
End If
Else
line = line & "|col4|col5"
opLine = opLine & line & vbCrLf
End If
ループ
Close #1 ' Close file.
Set ts = fso.CreateTextFile(strPath, True)
ts.WriteLine (opLine)
ts.Close
ストリーム ファイル (CSV ファイルを含むテキスト ファイルなど) の途中に何かを挿入する魔法の方法はありません。
したがって、これは、新しいファイルを書き出すときに、古いファイルを読み取って変更する必要があることを意味します。
ただし、これを行うには多くの方法があります。
最も単純で一般的な方法は、行ごとの読み取り/変更/書き込みです。これは、小さいファイルから中程度のファイルの「ブロブ」アプローチよりも遅くなる可能性がありますが、大きなファイルを処理する必要がある場合に発生する可能性のある頭痛のリスクはありません。
非常に大きなファイルの場合、I/O コストを最小限に抑えるために、読み取り、解析、変更、および「チャンク」への書き込みによって最適化できます。しかし、これは正しくプログラムするのがより複雑になる可能性もあります。
fso を閉じる必要があります。
Set fso = Nothing