Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : Excel 2016)
整数型でオーバーフロー
投稿日時: 21/05/08 14:45:06
投稿者: バルバロッサ

お世話になっております。
非常に単純な質問ですが、CSVのデータがどれぐらい長いのかを見たいと思い、マクロを作成しました。
Sub readCSV()
    Dim vName As Variant
    Dim iLin As Long
    vName = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", _
                                                Title:="CSVファイルの選択")
    If vName = False Then
        Exit Sub
    End If
 
     Open vName For Input As #1 'CSVファィルをオープン
   
    iLin = 0
    Do Until EOF(1)
        iLin = iLin + 1
    Loop
   
    Close #1
     
Debug.Print iLin
 
End Sub
としました。
しかし、 iLin = iLin + 1
のところでオーバーフローと出てきました。
念のため、CSVをメモ帳(テキスト)で開けて、数を数えてみたら、26542715列で2行(コンマ区切り)でした。
Long型の
長整数型    Long    -2,147,483,648〜2,147,483,647の整数
に収まる長さでした。
この場合、どうしたらよいのでしょうか?
よろしくお願い申し上げます。

回答
投稿日時: 21/05/08 15:16:56
投稿者: simple

    Do Until EOF(1)
        iLin = iLin + 1
    Loop
これだと読み込みをしていないので、
脱出条件はいつまで経っても満たされず、
無限ループになっていますね。

回答
投稿日時: 21/05/08 20:32:45
投稿者: WinArrow
投稿者のウェブサイトに移動

>数を数えてみた
 
オーバーフローは、ともかく
何を数えているのですか?
文字数なんですか?
レコード数なんですか?

投稿日時: 21/05/09 00:20:16
投稿者: バルバロッサ

Simple様
お返事が遅くなり申し訳ありません。
    Do Until EOF(1)
        Line Input #1, buf
        iLin = iLin + 1
    Loop
としたら、きちんとCsvファイルの中の行数が読めました。
 
WinArrow様
お返事遅くなり申し訳ありませんでした。
解決法にも記載したのですが、CSVのライン数です。
 
皆様大変お世話になりました。