テキストファイルを読み込む(ADODB.Streamを使う場合)
ADODB.StreamでUTF-8の小さなテキストファイルを読み、新規シートのA1へ全文を入れます。
実行前に確認
- Windows専用でADOが利用できる環境が必要です。CreateObjectを使うためVBEの参照設定は不要です。
- Charsetは元ファイルの文字コードに合わせます。ReadText(-1)は全文読み取りであり、行ごとのセル分割はしません。32,767文字を超える場合は中止します。
1サンプルコード
Sub ADODBStreamでテキストを読む()
Dim 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 stream = CreateObject("ADODB.Stream")
stream.Type = 2 'adTypeText
stream.Charset = "utf-8"
stream.Open
stream.LoadFromFile filePath
contents = stream.ReadText(-1) 'adReadAll
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図で見る操作の流れ
イメージ図コードに沿った概念図です。実際の画面や実行結果ではありません。
読取り前
C:\Data\sample.txtを短いUTF-8テキストとして用意
マクロ:全文取得
ADODB.StreamでUTF-8として全文を読み、ストリームを閉じる
マクロ:出力
32,767文字以内なら新規シートを追加し、A1へ文字列で格納・折り返し表示
出力後
改行も含めてA1の1セルに全文。元ファイルは変更なし
文字数上限超過なら出力前に中止。行別のセル分割はしません。ADOが利用できるWindows環境が必要です。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。
- 2
UTF-8形式で保存した短いテキストを用意し、filePathを実際のパスへ変えます。
- 3
実行するSubの内側にカーソルを置き、F5キーを押します。
- 4
新規シートのA1に改行を含む全文が入り、日本語が正しく読めるか確認します。