複数行の.csvファイルを読み込み、各トークンをExcel内の独自のセルに配置しようとしています。問題は、受信した.csvファイルを制御できないことです。VBAのデフォルト(vbCr/vbCrLf)とは異なる区切り文字を使って、一度に1行ずつファイルを読み込む方法はありますか?
これらはすべて列数が同じです(ただし、可変行数ですが、説明は簡単です)。ただし、何らかの理由で.csvファイルのソースがの場合、はCRLF
をヘッダー行の末尾に置き、は時々となります。LF
となります。繰り返しますが、私はこれを支配していませんので、私は可変性をコードする必要があります。
私が理解する限り、VBAラインLine Input #1, strLine
は、CR
またはCRLF
のいずれかを使用して行を区切ります。これは意味があります。私はすべての.csvファイルの内容を1つの文字列に配置してからReplace strFileContents, vbCr, ""
を使用してすべてのCR
文字を削除しようとしましたが、これは後ですべてCRLF
を取り除いたように思えます。
したがって、Line Input #1, strLine
を使用して一度に1行を受け入れる方法がありますが、区切り文字はLF
ですか?または、文字列の内容全体を操作できる別の方法がありますか(つまり、CR
のみを取り除き、CRLF
のインスタンスではありません)、そこからの文字列はSplit()
ですか?ここで
は私のコードの短縮版である:
Dim Column, Row As Integer 'used Sheets().Input(Row, Column).Value to insert strings
Open strFilePath For Input Access Read As #1
Do Until EOF(1)
Line Input #1, strLine
strLine = Split(strLine, vbLf)(1)
arr = Split(strLine, ",")
For Column = 1 to 8
'insert stuff
Next Column
Row = Row + 1
Loop
しかし、これは私のためにかなりの仕事をしない、と私はそれがなかったならば、私はまだ余分CR
文字に対処しなければならないと考えています。
ありがとうございます。
'私は...すべてのCR characters'を排除するために、 ""、、vbCrをstrFileContentsを交換しようとしてきた - 良いです。すべての 'LF'を' CRLF'に置き換えるための第2段階を追加しました。 – GSerg
ああ、これは理にかなっています。今すぐ試して更新します。 –