テキストファイルを読み込む(Line Inputを使う場合)
テキストファイルを1行ずつ読み、新規シートのA列へ文字列として出力します。
実行前に確認
- Windows専用の例です。C:\Dataは例なので、自分で用意した練習用フォルダーの絶対パスに変更してください。
- 文字列書式で入れるので、=から始まる行も数式として実行しません。セルの32,767文字・シート行数上限を超えると中止します。既に出力した行は残ります。
- UTF-8など異なる文字コードでは文字化けすることがあります。
1サンプルコード
Sub Example4022()
Dim filePath As String, fileNumber As Integer, opened As Boolean
Dim lineText As String, n As Long, message As String
Dim ws As Worksheet
filePath = "C:\Data\sample.txt"
On Error GoTo Failed
fileNumber = FreeFile
Open filePath For Input As #fileNumber
opened = True
Set ws = ThisWorkbook.Worksheets.Add
ws.Columns("A").NumberFormat = "@"
Do Until EOF(fileNumber)
Line Input #fileNumber, lineText
n = n + 1
If n > ws.Rows.Count Then Err.Raise 6, , "行数の上限です"
If Len(lineText) > 32767 Then Err.Raise 6, , "1セルの文字数上限を超えます"
ws.Cells(n, 1).Value = lineText
Loop
Close #fileNumber
opened = False
MsgBox n & "行を読みました"
Exit Sub
Failed:
message = Err.Description
On Error Resume Next
If opened Then Close #fileNumber
On Error GoTo 0
MsgBox message
End Sub図で見る操作の流れ
イメージ図コードの動きを表した概念図です。実際のExcel画面ではありません。
入力:C:\Data\sample.txt
Windows既定文字コード・CRLFのテキスト
マクロ:新規シートを作る
A列を文字列書式に設定する
マクロ:1行→1セル
1行目→A1、2行目→A2… 空行は空セルになる
結果:ファイルを閉じる
読み終えた行数をメッセージに表示する
元ファイルは変更しません。「=」で始まる行も文字列です。文字数・行数上限などで中止した場合、既に出力したセルは残ります。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。
- 2
Windowsの既定文字コード・CRLF改行の練習用テキストを作り、filePathをそのパスへ変更します。
- 3
実行するSubの内側にカーソルを置き、F5キーを押します。
- 4
実行すると新規シートを作り、1行目をA1、2行目をA2へ書きます。空行は空のセルになります。