最終行の末尾に改行コードがない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行多くなる
Print # ステートメントは、標準の挙動として出力する文字列の最後に改行コードを自動で付与しているようですね。
失礼いたしました。