テキストファイルの読み込み(一括)

テキストファイルを一括で読み込みをします。
Stringで読み込んだ文字列を返します。Stringは最大で約 20 億 (2^31) 文字を格納できるので大概のファイルは問題ないです。
文字コードは、かなりの数に対応していますが、Shift-JIS、UTF-8、Unicode(UTF-16)でほぼ足りると思います。それ以外は、Charset プロパティ (ADO)でWindows レジストリの参照がありますので、参照してください。

「ADODB.Stream」は、参照設定を設定することで、定義値やメソッドとプロパティが表示されるため、処理を拡張する際には便利になりますので、以下も参照してください。
Microsoft ActiveX Data Object Library (Stream)

【サンプルプログラム】

MsgBox TextFileBulkRead("C:\ExcelVBA\ファイル\テキスト.txt")
MsgBox TextFileBulkRead("c:\ExcelVBA\ファイル\テキスト_UTF8.txt", "UTF-8")
MsgBox TextFileBulkRead("C:\ExcelVBA\ファイル\テキスト_UTF16.txt", "UTF-16")

【関数化】

' ------------------------------------------------------------
' 説明:テキストファイルを一括読み込み
' 引数:1:読み込むファイル名
'       2:文字コード(処置気はShift-JIS)
' 戻値:読み込んだテキスト文字
' 補足:文字コード
'       UTF-8 (BOM あり/なし) = "UTF-8"
'       UTF-16LE (BOM あり/なし) = "UTF-16"
'       UTF-16BE (BOM あり) = "UTF-16"  ※BOMなしは文字化けする
' ------------------------------------------------------------
Function TextFileBulkRead(filename As String, Optional charcode As String = "SHIFT_JIS") As String

    Dim buf As String
    
    If IsFileExists(filename) = False Then
        MsgBox "ファイルがありません"
        Exit Function
    End If
    
    With CreateObject("ADODB.Stream")
        .Charset = charcode
        .Open
        .LoadFromFile filename
        buf = .ReadText
        .Close
    End With

    TextFileBulkRead = buf

End Function

以下の関数を使用していますので、リンクから関数をコピーします。
ファイルの有無を確認する IsFileExists()

コメント