← コード一覧へ戻る
実務テキストファイル

テキストファイルを読み込む(FileSystemObjectを使う場合)

FileSystemObjectで小さなテキストファイルを全文読み取り、新規シートのA1へ入れます。

実行前に確認

  • Windows専用の例です。C:\Dataは例なので、自分で用意した練習用フォルダーの絶対パスに変更してください。
  • CreateObjectを使うため参照設定は不要です。UTF-8指定ではありません。UTF-8ならADODB.Streamの例を使います。
  • 全文をメモリに読むため巨大ファイルには不向きです。32,767文字を超えた場合は書き込みを中止します。

1サンプルコード

Sub FileSystemObjectでテキストを読む()
    Dim fso As Object, stream As Object, ws As Worksheet
    Dim filePath As String, contents As String, message As String
    filePath = "C:\Data\sample.txt"
    On Error GoTo Failed
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set stream = fso.OpenTextFile(filePath, 1, False, -2)
    contents = stream.ReadAll
    stream.Close
    Set stream = Nothing
    If Len(contents) > 32767 Then Err.Raise 6, , "1セルの文字数上限を超えます"
    Set ws = ThisWorkbook.Worksheets.Add
    ws.Range("A1").NumberFormat = "@"
    ws.Range("A1").Value = contents
    ws.Range("A1").WrapText = True
    Exit Sub
Failed:
    message = Err.Description
    On Error Resume Next
    If Not stream Is Nothing Then stream.Close
    On Error GoTo 0
    MsgBox message
End Sub

図で見るファイルの変化

イメージ図

概念図:ファイルの全文を、1つのセルへ読み込みます。

  1. 読み込み元

    C:\Data\sample.txt システム既定の文字コードの短いテキスト

  2. マクロ:読み取り

    ReadAllで全文を読み、ファイルを閉じる

  3. マクロ:文字数確認

    32,767文字以内か確認

  4. 読み込み後

    マクロ格納ブックの新規シート!A1 全文を文字列として入れ、折り返して表示

元ファイルは変更しません。文字数上限超過なら書き込まず終了。UTF-8指定ではなく、巨大ファイルには不向きです。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。

  2. 2

    filePathを短い練習用テキストへ変更します。この例はOpenTextFileの第4引数-2でシステム既定の文字コードを使います。

  3. 3

    実行するSubの内側にカーソルを置き、F5キーを押します。

  4. 4

    実行すると新規シートのA1に、改行を含む全文が1セルで入ります。

使っている機能の公式ドキュメント(Microsoft Learn)