CSVファイルを読み込む場合、保存方法等で問題が起こることがあります。
目次
保存方法の違い
文字コードを変えて保存した csvファイル です。
- 上:ANSI
- 下:UTF-8

このファイルをダブルクリックで開いた場合
文字コードの問題ではないですが、両方とも先頭が0で始まる数字は0なしで表示されます。
参考:CSVファイルを開くと0で始まるデータが0なしで表示される
- 上:ANSI
- 下:UTF-8

UTF-8の問題点
- 文字化け:UTF-8
- 5列で表示されるデータだが4列で表示されている
- データがずれている
Line Input # ステートメントでデータを配列に格納した場合の問題
次のマクロを実行した場合、UTF-8で保存したcsvファイルは問題があります。
コードの最後に「stop」を入れています。
Sub sample()      
    Dim fName As String
    Dim lastR As Long, lastC As Long
    Dim buf As String, tmp As Variant, ary() As Variant
    Dim r As Long, c As Long, i As Long, cnt As Long
  
    fName = "F:\sample\csvコンマ区切り.csv"
    lastR = CreateObject("Scripting.FileSystemObject").OpenTextFile(fName, 8).Line
    ReDim ary(lastR - 2, 4) As Variant
  
    Open fName For Input As #1
    Do Until EOF(1)
       Line Input #1, buf
       tmp = Split(buf, ",")
       For c = LBound(tmp) To UBound(tmp)
           ary(r, c) = tmp(c)
       Next c
       r = r + 1
    Loop
    Close #1 
  stop
End Sub
8行目
最終行のデータがわからない前提です。次のコードで最終行を取得します。
 lastR = CreateObject("Scripting.FileSystemObject").OpenTextFile(fName, 8).Line
9行目
4行目の「dim ary() As Variant」の動的配列のサイズ変更です。
ReDim ary(lastR - 2, 4) As Variant
ファイルの末尾は6行目の「EOF」です。配列は0からはじまるので、行数は「lastR - 2」で列数は固定という前提で「4」にしています。

ANSI
ローカルウィンドウで確認すると、問題なく配列に格納されています。

UTF-8
文字化けしたまま配列に格納されます。

ローカルウィンドウ
もう一つの問題は、3行目と4行目を1行として読込んでいるので、配列「ary」の大きさを超えてしまってます。


 
			 
			 
			 
			 
			 
			 
			