フォルダ内に大量のCSVがあり、1ファイルづつファイルを開くことなく、それぞれの最終行を取得します。
結果は、エクセル上にファイル名と最終行を書き出します。
OpenTextFile メソッドのLineプロパティで最終行を取得する方法です。
参考:FileSystemObject・ファイルシステムオブジェクト
目次
最終行取得の例
ファイル保存先:F:\sample
最終行を取得するcsvファイル
- test1.csvの最終行:10
- test2.csvの最終行:15
- test3.csvの最終行:20
csvファイル
マクロ実行結果
2行目から書き出します。A列はファイル名、B列は最終行。
サンプルコード
Sub sample() Dim i As Long Dim FSO As Object Dim fPath As String: fPath = "F:\sample\" Dim cFile As String: cFile = Dir(fPath & "*.csv") Set FSO = CreateObject("Scripting.FileSystemObject") i = 2 Do While cFile <> "" Dim LR As Long: LR = FSO.OpenTextFile(fPath & cFile, 8).Line Cells(i, 1) = cFile Cells(i, 2) = LR - 1 cFile = Dir() i = i + 1 Loop Set FSO = Nothing
6行目:「FileSystemObject・ファイルシステムオブジェクト」参照
8行目:エクセルの書き出しは2行目~
12行目:「EOF」が最終行なので「-1」します。
Cells(i, 2) = LR - 1