Microsoft Access 掲示板

FileSystemObjectで読み込んだCSVファイルの行数

1 コメント
views

最終行の末尾に改行コードがないCSVファイルを、FileSystemObjectで読み込んだ時
行数が1行多くカウントされているのは何故なのでしょうか?
1行多くならないようにする方法はあるのでしょうか?

最終行の末尾に改行コードを入れないようにCSVファイルを作ります

    yname = Environ("UserProfile") 'ユーザー名を取得
    Sn = "テスト"  

    Open yname & "\Desktop\データ\" & Sn & ".csv" For Output As #1 '白紙で開く
    Dim wb As Workbook
    Dim ws As Worksheet

    Set wb = Workbooks("test.xlsm")
    Set ws = wb.Worksheets(Sn)

    lc = ws.Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To lc
     For c = 1 To x
       tex = tex & Trim(ws.Cells(i, c)) & ","
      Next
      'tex = Left(tex, Len(tex) - 1) & vbCrLf
      tex = Left(tex, Len(tex) - 1)
      If i <> lc Then
          tex = tex & vbCrLf
       End If
     Next

     'Print #1, tex
     Print #1, tex
     Close #1

作ったCSVファイルの行数を調べます

    Dim fso As Object
    Dim ts As Object
    Dim filePath As String
    Dim rowCount As Long

    yname = Environ("UserProfile") 'ユーザー名を取得
    filePath = yname & "\Desktop\データ\" & Sn & ".csv" ' 実際のCSVファイルパス

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.OpenTextFile(filePath, 1)  
    ' ファイルの末尾までスキップして行数を取得
    If Not ts.AtEndOfStream Then 'ファイルの末尾の直前でなかったら
        ts.ReadAll
        rowCount = ts.line
    Else
        rowCount = 0
    End If
    ts.Close
    MsgBox "行数: " & rowCount →1行多くなる

sql
作成: 2026/02/22 (日) 15:44:05
通報 ...
1

Print # ステートメントは、標準の挙動として出力する文字列の最後に改行コードを自動で付与しているようですね。
失礼いたしました。