テキストデータからデータを取得(Input#)

テキストデータからデータを取得するInput#ステートメントの使用方法。csvデータ取得に向いています

'csvやWrite#の文字列を取得
Input #1, 文字列変数

開いたテキストデータから文字列を取得するには「Input#」ステートメントを使用します
主にcsvデータやWrite#ステートメントで追記した文字列を取得する際に使用します

このステートメントでは「,」や改行でデータが区切られます
データは、引数に指定した変数に代入されます

Input #1, 文字列変数

引数1つ目の「#1」はOpenステートメントで開く際に指定したファイル番号になります
ファイル番号に関する解説は以下の記事を確認してください

2つ目の引数「文字列変数」は、取得したデータを代入する変数名を指定します
この引数はリストデータになるので、追加で指定することが可能です

取得時の動き

Sub 処理テスト()
    Open ThisWorkbook.Path & "\新しいテキスト ドキュメント.txt" For Input As #1
    Do Until EOF(1) = True
        Input #1, 文字列変数
        Debug.Print 文字列変数
    Loop
    Close #1
End Sub

1要素ずつ取得して、それをイミディエイトに出力していく処理です
このコードを以下の文字列で実行して、取得の動きを確認します

取得を行うテキストデータ
取得を行うテキストデータ

この画像のテキストデータをコード実行し、取得を行います
その取得後の出力結果が以下の画像になります

取得を実行したイミディエイトの出力結果
イミディエイトの出力結果

上下の画像を見比べて取得のされ方を確認してください

「新しいテキスト1行目,青」
これは「,」でデータが区切られるので「新しいテキスト1行目」と「青」に分割して取得されます

「”新しいテキスト2行目”,黄」
これは1つ目に取得される文字列には、「”」で囲まれた文字列表現になっています
このステートメントでは「”」は除外して中の文字列を取得します
2つ目は「,」で区切られるので上記と同じです

「”新しいテキスト3行目,赤”」
これは1行まるごと「”」で囲まれています
この状態では、「,」は文字列と認識されるのでデータが分割されることはなく1行まるごとが取得されます

Input #1, 文字列変数(0), 文字列変数(1)

このコードのように、取得させる変数を「,」で区切って追加することでまとめて取得する事が可能です
上記の「新しいテキスト1行目,青」を取得させた場合は、1回の取得で「青」までの2つを取得できます
とはいえ、分割して一括取得はSplit関数を応用するほうが簡単です

このステートメントで、取得を行う際に文字列がcsvのようにある程度きちんとしたデータではなかった場合不安定かもしれません
そういったテキストデータを扱う際には以下のLineInput#ステートメントの方がいいかもしれません