投稿日 | : 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