VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2004/08/08(Sun) 22:19
投稿者花ちゃん
Eメール
URL
タイトルRe^5: EOF が効かない

> ExcelのデータをCSVに落としています。
Excelのセルの中に(データ中), や "" が含まれている可能性があるので
Excel上で  , や "" を検索して使っていないか確認して下さい。

> Debug.printで確認すると、データは一番最後の行まで読み込んでいますが
> その後、エラーが発生しています。
列×行 の数が合わないからデータの最後でエラーが発生しているのです。

データのどの辺に(前の方か後ろの方か), "" (又は問題)があるのか調べる
ためにExcel上で仮に100行なら50行づつにして半分づつ読み込んでみれば
どちらに問題があるか解りますよね。
その前に検索して, "" を使っていないか探して見て下さい。

データの途中に , や "" が含まれていてもそこでエラーが発生する訳ではありません。
, や "" が含まれていた場合 1列が2列としてカウントされるのです。
5列×100行ならデータは500個のはずが501個になるからEOFの位置が合わずエラーが
発生するのです。(最後まで読み込まないと違うか解らないから最後まで読んでいるのです)


# 先の投稿で一部データと出力結果が違っておりました。お詫びして訂正します。

Excel に下記のように書いてCSV形式で保存して下さい。
1    1,1    a
2    1,2"    b
3    1,3    c

下記のコードを実行すると
Private Sub Command1_Click()
    Dim lngDatN    As Long
    Dim intFileNo  As Integer
    Dim dat(2) As String
    lngDatN = 0
    intFileNo = FreeFile
    
    Open "c:\book1.csv" For Input As #intFileNo
    Do Until EOF(intFileNo)
        Input #intFileNo, dat(0), dat(1), dat(2)
        Debug.Print dat(0), dat(1), dat(2)
    Loop
    Close #intFileNo
End Sub

結果下記のように出力されます。(当然エラーが出ます)
1             1,1           a
2             1,2          
b             3             1,3


Excel に下記のように書いてCSV形式で保存して下さい。
1    1    a
2    2    b
3    3    c

実行すると 当然ながら下記のようになります。
1             1             a
2             2             b
3             3             c


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -