|
お世話になります。
csvファイルを読み込んで、エクセルファイルに貼り付ける処理で疑問ができましたので、質問します。
まずデータから
Aという処理を行うときに出力されるH.csvには4つのタイプが存在します。
(1)東京 現像
(2)東京 ←後ろが空白
(3) 現像 ←前が空白
(4) ←どちらも空白
ソースはこちらで...↓
Const csv1 = "H.csv"
Const csv2 = "B.csv"
Sub Auto_Open()
Dim fname As String
Dim fno As Integer
Dim col(0 To 18) As Variant
Dim i As Integer
Dim sts As String
'ファイル名
fname1 = ActiveWorkbook.Path & "\" & csv1
fname2 = ActiveWorkbook.Path & "\" & csv2
'CSVファイルの内容を貼り付ける(ヘッダ部)
fno = FreeFile
On Error GoTo file_not_found
Open fname1 For Input As #fno
On Error GoTo 0
If EOF(fno) = False Then
'一旦String型で受けてVariant型に入れなおす
For i = 0 To 1
Input #fno, sts
col(i) = sts
Next
Range(Cells(2, 19), Cells(2, 20)).Value = col
End If
Close #fno
(中略)
Exit Sub
End Sub
現状のソースでは(1)の場合は処理が正常に行われるのですが、(2)、(3)、(4)の場合「ファイルにこれ以上データがありません」というエラーが表示されます。
これはAの処理の場合でして、Bの処理では最初からH.csvに1つしかデータがないものもあります。
If EOF(fno) = False Then
'一旦String型で受けてVariant型に入れなおす
Input #fno, sts
col(0) = sts
Cells(2, 6).Value = col(0)
End If
Bのようにデータが1つしか存在しない処理の場合は↑のような書き方で処理が行われる(値が入っていないときもエクセルファイルには空白のままで出力してくれる)のですが、Aの処理がどうしてもわかりません。
お手数ですが、どなたかお力を貸してください。
|
|