テキストファイルを読み込む(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つのセルへ読み込みます。
読み込み元
C:\Data\sample.txt システム既定の文字コードの短いテキスト
マクロ:読み取り
ReadAllで全文を読み、ファイルを閉じる
マクロ:文字数確認
32,767文字以内か確認
読み込み後
マクロ格納ブックの新規シート!A1 全文を文字列として入れ、折り返して表示
元ファイルは変更しません。文字数上限超過なら書き込まず終了。UTF-8指定ではなく、巨大ファイルには不向きです。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。
- 2
filePathを短い練習用テキストへ変更します。この例はOpenTextFileの第4引数-2でシステム既定の文字コードを使います。
- 3
実行するSubの内側にカーソルを置き、F5キーを押します。
- 4
実行すると新規シートのA1に、改行を含む全文が1セルで入ります。