| 
    
     |  | お世話になってます。 csvファイルからデータを読み込んでエクセルファイルに貼り付ける作業をやっていてわからなくなりました。
 
 以下、csvのデータとソースです。
 ★csvファイル
 1,大阪,101,E-6,1234000,5200,52360,125200,45520
 2,大阪,102,C-4,2354,2354,2354,2354,2354
 
 ★ソース
 Const csv1 = "H.csv"
 Const csv2 = "B.csv"
 
 Sub Auto_Open()
 Dim fname As String
 Dim fno As Integer
 Dim col(0 To 255) As Variant '<-- 可変のため最大値で設定
 Dim i As Integer
 Dim sts As String
 Dim flg As Integer
 Dim ii As Integer
 
 'ファイル名
 fname1 = ActiveWorkbook.Path & "\" & csv1
 fname2 = ActiveWorkbook.Path & "\" & csv2
 
 'CSVファイルの内容を貼り付ける(ボディ部)
 fno = FreeFile
 On Error GoTo file_not_found
 Open fname2 For Input As #fno
 On Error GoTo 0
 l = 7
 flg = 1 '上段の場合は1をセット。下段の場合は2をセットする。
 Do Until EOF(fno)
 '一旦String型で受けてVariant型に入れなおす
 For i = 0 To 8 ' <-- (1)
 Input #fno, sts '↑今までは1件のデータの長さが固定だったから数字を指定できた。
 col(i) = sts
 Next
 
 l = l + 1
 Range(Cells(l, 1), Cells(l, 9)).Value = col
 Loop
 Close #fno
 
 'オートフォーマット
 Cells(7, 1).CurrentRegion.AutoFormat _
 Format:=xlRangeAutoFormatLocalFormat3, _
 Number:=False, _
 Font:=False, _
 Alignment:=False
 
 Exit Sub
 file_not_found:
 MsgBox "CSVファイルが見つかりません", vbCritical + vbOKOnly, "システムエラー"
 End Sub
 
 今まではcsvの1件の長さが決まっていたため(1)の部分は8のように値を固定できていたんですが、csvによっては(1)の部分が変動するため固定値を設定することができなくなりました。
 それでまず1.の部分に変数をセットし、csvの1件のデータを読んでカンマの数を数えて、(1)の部分の変数に値をセットしようと思っているのですが、1行を読み込んでカンマの数を数えるというやりかたがわかりません。
 
 どなたか助言をお願いします。
 説明が下手で申し訳ありません。説明不足なら言ってください。
 よろしくお願いします。
 
 |  |