Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


59723 / 76732 ←次へ | 前へ→

【21684】csvからエクセルファイルへの貼り付けについて
質問  Aiz  - 05/1/26(水) 19:08 -

引用なし
パスワード
   お世話になります。
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の処理がどうしてもわかりません。
お手数ですが、どなたかお力を貸してください。
2 hits

【21684】csvからエクセルファイルへの貼り付けについて Aiz 05/1/26(水) 19:08 質問
【21686】Re:csvからエクセルファイルへの貼り付けについて りすりす 05/1/26(水) 20:59 発言
【21689】Re:csvからエクセルファイルへの貼り付けについて Aiz 05/1/26(水) 21:46 発言
【21688】Re:csvからエクセルファイルへの貼り付けについて ichinose 05/1/26(水) 21:36 発言
【21699】解決 Aiz 05/1/27(木) 14:03 お礼

59723 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free