|
CSVファイルを読み込み、エクセルファイルに貼り付ける処理で、不明なことがあります。
csvファイルに値が入っている場合は正常に処理されるのですが、値が入っていない場合「ファイルにこれ以上データがありません」というエラーメッセージが表示されます。
値が入っていない場合、値は空白セル表示にしたいのですが、やり方がわかりませんでした。
よろしくお願いします。
ちなみに以下にあるB.csvの場合は値が空白の場合、空白セルで表示されました。
H.csvの場合にエラーが表示されます。
H.csvの中身(どちらも値が入っている場合)
AA,CC
こういう場合にエラーになる↓
AA,
や
,CC
B.csvの中身
,,103,,102001,AAAAAAAAAA,1,135-12,0,10,1,1,現像,,1,現像,0,6,1
test.exlのソース
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ファイルの内容を貼り付ける(H.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
'CSVファイルの内容を貼り付ける(B.csv)
fno = FreeFile
On Error GoTo file_not_found
Open fname2 For Input As #fno
On Error GoTo 0
l = 4
Do Until EOF(fno)
'一旦String型で受けてVariant型に入れなおす
For i = 0 To 18
Input #fno, sts
col(i) = sts
Next
l = l + 1
Range(Cells(l, 2), Cells(l, 20)).Value = col
Loop
Close #fno
'オートフォーマット
Cells(4, 2).CurrentRegion.AutoFormat _
Format:=xlRangeAutoFormatLocalFormat3, _
Number:=False, _
Font:=False, _
Alignment:=False
'CSVファイルを削除する
'Kill fname1
'Kill fname2
Exit Sub
file_not_found:
MsgBox "CSVファイルが見つかりません", vbCritical + vbOKOnly, "システムエラー"
End Sub
|
|