テキストファイルを読み込んで配列に格納
- yuji fukami
- 2024年1月15日
- 読了時間: 2分
更新日:9月23日
<概要>
今回は、指定パスのテキストファイルを読み込んで配列に格納する汎用プロシージャを紹介します。
読み込むテキストファイルはフルパスで指定しますが、テキストファイルの各行がカンマ「,」区切りやTab区切りの場合は、その区切りの数だけ列数の二次元配列を返します。データを二次元配列として取得することで、次に処理しやすい形式として扱うことが可能となります。
また、テキストファイルの文字エンコーディングはUTF-8、UTF-16、ShiftJISから選択も可能です。読み込むテキストファイルの形式に合わせて設定してください。
<用途>
テキストファイルを読み込む
<プロシージャ紹介>
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)


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