テキストファイルを一括で読み込みをします。
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()

コメント