Excel VBAの「Input 関数」について解説します。
Input 関数とは
Excel VBA の Input 関数は、Open ステートメントで開かれたファイルから指定した文字数の文字列を取得して返します。
Open ステートメントはシーケンシャルモード (Input) かバイナリモード (Binary) で開いている必要があります。開いたファイルのファイル番号からデータを取得します。
Input 関数の構文や引数の設定と実際の使い方について具体的に解説していきたいと思います。
Input 関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
Input(number, [#]filenumber)
引数
引数 | 説明 |
---|---|
number | 【必須】取得する文字数を指定します |
filenumber (Variant) | 【必須】開いたファイルの番号を指定します ※ ナンバー記号「#」の付加は任意です |
戻り値
戻り値 | 説明 |
---|---|
文字列 (String) | 指定した文字数分の文字列を返します |
※ 改行(vbCrLf)は vbCr と vbLf の 2 文字として扱われます。
解説(使用例)
Input 関数の使い方について、サンプルを使って解説します。
Input 関数サンプル
Input 関数の基本的な使い方をサンプルで確認します。
ファイルから指定文字数を読み込む例
Input 関数を使用してテキストファイルにから指定文字数をを読み込む例です。
'■Input関数サンプル1(指定文字数を取得する例)
Sub Input_Sample01()
Dim str As String
' Open...Outputモードでファイルに文字列を書き込む
Open "c:\VBA_Sample\test.txt" For Output As #1
Print #1, "12345" & vbCrLf & "67890"
Close #1 ' ファイルを閉じる
' OpenステートメントInputモードでファイルを開く
Open "c:\VBA_Sample\test.txt" For Input As #1
' 最初の3文字を読み込む
str = Input(3, 1)
MsgBox str
' 残りの7文字を読み込む
str = Input(7, 1)
MsgBox str
Close #1 ' ファイルを閉じる
End Sub
コードの前半部分は、指定パスの test.txt に Openステートメントの Output モードで文字列を改行文字を含めて書き込んでいます。開いたファイルは閉じておきます。
次に、シーケンシャル入力 (Input) モードでファイルをファイル番号(#1)で開きます。
開いたファイルから、Input 関数で取得文字数を3文字に指定して読み込み、変数に格納して表示します。

画像のとおり先頭からの3文字分の「123」を取得して常時されました。
次に、ファイルは閉じすに再度 Input 関数でファイル内の文字を読み込む場合、先に読み込んだ文字数の次の位置から読み込みます。7文字分読み込むように指定した結果が次の MsgBox です。

途中に改行文字(vbCr + vbLf)が入っているので 2文字分消費されているのがわかります。
最後にファイルを閉じて終了です。
では次は、読み込み位置が順に移動していくことを利用して文字列全部を取得する例を紹介します。
ファイル内の文字列をすべて取得する例
Input 関数を使って先ほど使用したファイル内のすべての文字を読み取って表示する例です。
'■Input関数サンプル2(全文字列を取得する例)
Sub Input_Sample02()
Dim str As String
' OpenステートメントInputモードで先程と同じファイルを開く
Open "c:\VBA_Sample\test.txt" For Input As #1
Do While Not EOF(1)
' 1文字づつ読み込みつなげていく
str = str & Input(1, 1)
Loop
' 全ての文字列を表示
MsgBox str
Close #1 ' ファイルを閉じる
End Sub
シーケンシャル入力 (Input) モードでファイルをファイル番号(#1)で開きます。
開いたファイルから、Input 関数で1文字づつ取得して変数に格納していきます。
Do While Not EOF(1) でファイルの終焉までループしながら1文字づつ変数に追加していきます。
ループ完了後に MsgBox に取得した文字列が次のように表示されました。

最後にファイルを閉じて終了です。
【注意点】
・エラー処理をしていないので、ファイルが存在しない場合 Open ステートメントでエラーが発生します。
・ファイルの終わりを確認する EOF 関数を使わない場合、無限ループに陥る可能性があります!
おわりに
VBAの関数一覧はこちらからご参照ください。
VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!
Excel VBA の Input 関数は、ファイルから文字列データを読み取るために使用されます。
構文 Input(number, [#]filenumber) の number に指定した文字数分のデータを読み取ります。
ファイルを閉じる前に、再度 Input 関数を使用すると、直前に取得したデータ以降から取得します。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;