[[20100317174148]] 『CSVファイルの2行目までだけ読み込みたい』(めろす) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『CSVファイルの2行目までだけ読み込みたい』(めろす)

CSVファイルの上から2行目だけ読み込みたいのですが、以下のコードをどう直したらよいでしょうか?教えて下さい。

CSVファイルの読み込みコードを探したところ、別なサイトで以下のようなコードを見つけました。

読み込み対象のファイルにはヘッダ行が2行あります。ヘッダ行だけ読み込みたいのです。全体としては行数がかなり多いので、ファイルの終わりまで処理を続けてほしくありません。

Sub test()

    Dim FileType, Prompt As String
    Dim FileNamePath As Variant
    Dim textline, csvline()  As String
    Dim Rowcnt As Integer
    Dim ch1 As Long

    FileType = "CSV ファイル (*.csv),*.csv"
    Prompt = "CSV File を選択してください"
    FileNamePath = SelectFileNamePath(FileType, Prompt)

    If FileNamePath = False Then
        End
    End If

    ch1 = FreeFile

    Open FileNamePath For Input As #ch1

    Rowcnt = 1
    Do While Not EOF(ch1)

      '一行目を読み込む
      Line Input #ch1, textline

      '"を除く
      textline = Replace(textline, """", "")

      'テキストをカンマでちょん切って配列に読み込む
      csvline() = Split(textline, ",")

      Range(Cells(Rowcnt, 1), _
              Cells(Rowcnt, UBound(csvline()) + 1)) = csvline()

      Rowcnt = Rowcnt + 1

    Loop

CloseFile:

    Close #ch1

End Sub

ご教示よろしくお願いします。


 2行目だけ。
 先頭2行だけなら、1行目も処理をする。
    Do While Not EOF(ch1)
    Loop
 を削除。
 *-*-*-*
      '一行目を読み込む
      Line Input #ch1, textline

      'もう一行読み込む
      Line Input #ch1, textline

      '"を除く
      textline = Replace(textline, """", "")

      'テキストをカンマでちょん切って配列に読み込む
      csvline() = Split(textline, ",")

      Range(Cells(Rowcnt, 1), _
              Cells(Rowcnt, UBound(csvline()) + 1)) = csvline()
 (あん)

 あん様

 なるほど、Line Inputって、Loopを使わなくても自動的に次の行に行くのですね。

 ありがとうございました。
 (めろす)

 あん様

 1行目と2行目両方読み込みたいので、2回同じ処理を繰り返せばよいのですね。

 ありがとうございました。 
 (めろす)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.