私にはfile.csv
があります。ダブルクリックで開くと、適切な設定でExcelで開きます(セミコロンがなく、データの各行が適切な列に正しく表示されています)。VBAのワークシートとしてCSVを開く - 不正な構文解析
例の結果:
しかし、VBAに:(私はすべての私の試みを保ち開始する前に、他の数)
'Workbooks.OpenText Filename:=f, StartRow:=2, DataType:=xlDelimited, Semicolon:=True, ConsecutiveDelimiter:=True, TextQualifier:=xlTextQualifierNone
'Workbooks.OpenText Filename:=f, DataType:=xlDelimited, Semicolon:=True
'Workbooks.OpenText Filename:=f, DataType:=xlDelimited
'Workbooks.Open Filename:=f, Format:=xlDelimited, Delimiter:=Chr(34)
'Workbooks.Open Filename:=f, Format:=xlDelimited, Delimiter:=";"
Workbooks.Open Filename:=f, Format:=xlDelimited
Dim s As String
s = """" & ";" & """"
Workbooks.Open Filename:=f, Format:=xlDelimited, Delimiter:=s
'Workbooks.OpenText Filename:=f, DataType:=xlDelimited, OtherChar:=s
'Workbooks.OpenText Filename:=f, DataType:=xlDelimited, OtherChar:=";"
私は上記の行を試みたとして、まったく引数がなくても、私が何をしていても、ファイルをダブルクリックするとテキストが分割されずに開きます。
例の結果:要約中のSO
。ファイルをダブルクリックすると、ファイルが正しく解析されます。Open
およびOpenText
は正しく解析されません。驚くべきことに、ワークシートはOpen
またはOpenText
を使用するかどうかにかかわらず同一に見えます。
this questionにも同様の問題が記載されていますが、適切な回答はありません。私たちの場合の違いは、Excelが何かを私のためにと解析しないことです。OPのファイルの大部分を解析するようです。
ブックを開いて、列の1つを繰り返して、閉じます。私はいくつかの回避策を念頭に置いているので、不必要に迂回して解決することができます。
これまでのところ私はこれらのアイデアを発見した:
- が
.txt
に.csv
の名前を変更し、OpenText
を使用してLEFT
/MID
を使用して表示されるようborkedファイル上QueryTable
インポート - 反復処理を使用して
OpenText
- を使用して/
RIGHT
で所望のカラムに到達する。 - バイナリ
Open
および0配列に各行
理想の答え:Workbooks.OpenText
または類似のネイティブ関数を使用してこのソリューションを実現する方法
- 。
Workbooks.OpenText
についての説明やそれに似た最も適切なネイティブ関数が、Excel自体がそれに対応していると思われる結果を達成できない理由についての説明- その他の回避策。