InputText|文字コード対応テキスト読込を配列化 | Excel VBA
- yuji fukami
- 2024年1月15日
- 読了時間: 2分
更新日:1月4日

<概要 (テキスト 読込 VBA)>
InputText は、テキストファイルを読込み、内容を **二次元配列(行×列)** として取得するための汎用プロシージャです(テキスト 読込 VBA)。
UTF-8 / UTF-16 / ShiftJIS といった **複数の文字エンコーディングに対応**しており、CSV や区切り付きテキストを安全に扱えます。
VBA標準の `Open ... For Input` では文字化けが起こりやすい UTF 系ファイルも、
ADODB.Stream を併用することで正確に読み込める点が特長です。
区切り文字(Delimiter)や改行コード(NewLine)は引数で柔軟に指定でき、
列数が行ごとに異なるテキストでも、最大列数に合わせた二次元配列として自動整形されます。
「CSVを一度配列で扱ってから高速処理したい」「文字コード違いのファイルを統一的に読みたい」
といった場面で、そのまま再利用できる実務向けの部品です。
<用途>
指定パスのテキストファイルを読み込む(テキスト読込)
<プロシージャ紹介>
Public Function InputText(FilePath As String, StringEncode As EnumStringEncode, [Delimiter As String = "",""], [NewLine As String = vbCrLf]) As Variant
名前: InputText /Functionプロシージャ
説明: テキストファイルを読み込んで二次元配列として返す
文字エンコーディングはUTF-8,UTF-16,ShiftJISから選択
'引数
FilePath ・・・テキストファイルのフルパス
StringEncode・・・文字エンコーディング
[Delimiter] ・・・区切り文字
[NewLine] ・・・改行文字(デフォルトでvbCrLf)
他vbLf,vbCrを設定可能
<実行例>
次のようなコードを用意します。
なおOneDriveの影響も考慮してConvOneDrivePath_LocalPathプロシージャを利用しています。
フォルダ内には「Test_Comma.txt」と「Test_Tab.txt」の2つのテキストファイルが用意されています。

2つのテキストファイルの中身は次のようになっています。「Test_Comma.txt」は各行の値がカンマ「,」で区切られており、「Test_Tab.txt」の場合はTabで区切られています。


先ほどのコードを実行あとに、ローカルウィンドウを確認すると変数TextFile_Comma、TextFile_Tabには二次元配列としてテキストファイルの中身が格納されているのが確認できます。

<技術解説>
InputTextプロシージャは第2引数で文字エンコーディングを選択できますが、コーディング中に入力候補がるようになっています。こちらはユーザー定義のEnum(EnumStringEncode)を引数の型として指定することで可能となるテクニックです。プロシージャの引数で複数の機能から選択させたい場合などで有効的です。

ユーザー定義のEnum(EnumStringEncode)


<サンプルファイル>
<コード>



