|
お世話になってます。
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行を読み込んでカンマの数を数えるというやりかたがわかりません。
どなたか助言をお願いします。
説明が下手で申し訳ありません。説明不足なら言ってください。
よろしくお願いします。
|
|