|
>上記のように、ファイルを開く→行があるかぎり1行づつ読み出す
善く見ていなかった?
先に提示したコードは、CSVの読み込み用のコードで
カンマでフィールド分割していますが、
中にカンマが無ければ1行として読むので、其のままでも大丈夫かも?
1行其のまま読めば善いだけならもっと簡単に成ります
コードは、以下の様に成ります
尚、「Function GetReadFile」は、其のまま使います
また、「Function SplitCsv」は、使いませんので削除して下さい
Option Explicit
Public Sub ReadCsvFSO2()
Dim i As Long
Dim vntFileName As Variant
'読み込むファイルを指定
If Not GetReadFile(vntFileName, ThisWorkbook.Path) Then
Exit Sub
End If
'読み込みファイルのデータをシートに出力
'第1引数 読み込みファイル名
'第2引数 書き込むシート
'第3引数 書き込み始める行位置
'第4引数 書き込み始める列位置
CSVReadFSO vntFileName, ActiveSheet, 1, 1
End Sub
Private Sub CSVReadFSO(ByVal strFileName As String, _
ByVal wksWrite As Worksheet, _
Optional ByRef lngRow As Long = 1, _
Optional ByRef lngCol As Long = 1)
' CSVデータの読み込み
Dim strBuff As String
Dim objFso As Object
Dim objFileStr As Object
Const ForReading = 1
'FSOのオブジェクトを取得
Set objFso = CreateObject("Scripting.FileSystemObject")
'指定ファイルを読み込みモードでOpen
Set objFileStr = objFso.OpenTextFile(strFileName, ForReading)
With objFileStr
'ファイルの終り迄繰り返し
Do Until .AtEndOfStream
'ファイルから1行読み込み
strBuff = .ReadLine
'指定シートの指定行列位置について
'データの書き込み
wksWrite.Cells(lngRow, lngCol).Value = strBuff
'書き込み行位置を更新
lngRow = lngRow + 1
Loop
'ファイルをClose
.Close
End With
Set objFileStr = Nothing
Set objFso = Nothing
End Sub
|
|