VBA関数
Input関数

Excelマクロで必須のVBA関数を入門・初級・初心者向けに詳細解説
公開日:2013年5月以前 最終更新日:2025-06-15

Input関数


Input関数は、開かれているファイルから指定された数の文字を読み取り、その結果を文字列として返します。
主にバイナリモードまたはランダムモードで開かれたファイルからデータを読み込む際に使用されます。



Input関数の構文

Input(number, [#]filenumber)

number (必須):
データ型: Integer または Long
ファイルから読み込む文字数を指定します。

filenumber (必須):
データ型: Integer
Open ステートメントで開かれた有効なファイル番号を指定します。
シャープ記号(#)は省略可能です。

解説・制限事項等
  • Input 関数は、ファイルから指定されたnumberの文字数を読み込み、それらをString型で返します。
  • この関数は、改行コード(CR/LF)、カンマ、引用符などの特殊文字を解釈せず、そのままの文字として読み込みます。
  • これは、Line InputステートメントやInput #ステートメントとの大きな違いです。
  • ファイルがInputモードで開かれている場合、Input関数を使用するとエラーが発生する可能性があります。
  • 通常はBinaryモードまたはRandomモードで開かれたファイルに対して使用します。
  • numberで指定した文字数に達する前にファイルの終端(EOF)に達した場合、その時点までに読み込んだ文字数分の文字列が返されます。
  • ファイルポインタは、読み込んだ文字数の分だけ移動します。

Input関数の使用例

以下のコード例では、Input関数を使ってバイナリファイルから特定の文字数を読み込み、メッセージボックスに表示します。

Sub Input_Sample()

  Dim fileNum As Integer
  Dim filePath As String
  Dim readData As String
  Dim textToWrite As String

  filePath = ThisWorkbook.Path & "\BinaryTest.dat" ' 同一フォルダにテストファイルを作成
  textToWrite = "Hello, VBA Input Function!" ' 書き込むテキスト

  On Error GoTo ErrorHandler ' エラーハンドラを設定

  ' 1. バイナリモードでファイルを開き、データを書き込む
  fileNum = FreeFile ' 空いているファイル番号を取得
  Open filePath For Binary As #fileNum
  Put #fileNum, 1, textToWrite ' 文字列をファイルに書き込む
  Close #fileNum ' ファイルを閉じる

  ' 2. バイナリモードでファイルを開き、Input関数で読み込む
  fileNum = FreeFile ' 空いているファイル番号を取得
  Open filePath For Binary As #fileNum

  ' 最初の5文字を読み込む
  readData = Input(5, #fileNum)
  MsgBox "ファイルから読み込んだ最初の5文字: " & readData, vbInformation, "Input 関数 例1" ' 結果: Hello

  ' 次の2文字を読み込む
  readData = Input(2, fileNum) ' #は省略可能
  MsgBox "ファイルから読み込んだ次の2文字: " & readData, vbInformation, "Input 関数 例2" ' 結果: ,

  ' 残りの文字を全て読み込む
  ' LOF関数でファイルの全長を取得し、すでに読み込んだ分を差し引く
  readData = Input(LOF(fileNum) - Seek(fileNum) + 1, fileNum) ' +1は、Seekが次のバイト位置を返すため調整
  MsgBox "ファイルから読み込んだ残りの文字: " & readData, vbInformation, "Input 関数 例3" ' 結果: VBA Input Function!

  Close #fileNum ' ファイルを閉じる

  ' テストファイルを削除
  Kill filePath

  Exit Sub

ErrorHandler:
  MsgBox "エラーが発生しました: " & Err.Description, vbCritical, "エラー"
  If fileNum <> 0 Then Close #fileNum ' 開いているファイルがあれば閉じる
  If Dir(filePath) <> "" Then Kill filePath ' テストファイルが残っていたら削除
End Sub

  • このコードでは、まず ThisWorkbook.Path & "\BinaryTest.dat" でテストファイルへのパスを定義しています。
  • FreeFile 関数を使用して、使用されていないファイル番号を取得し、Binaryモードでファイルをオープンしています。
  • Put ステートメントを使って、textToWrite に格納された文字列をバイナリファイルに書き込んでいます。
  • 例1では、Input(5, #fileNum) を使って、ファイルポインタの現在位置から5文字を読み込んでいます。読み込んだデータは readData に格納され、メッセージボックスで表示されます。
  • 例2では、続けて Input(2, fileNum) を実行しています。ファイルポインタは前の読み込みの終端から移動しているため、その位置からさらに2文字が読み込まれます。
  • 例3では、LOF(fileNum) 関数でファイルの全長(バイト数)、Seek(fileNum) 関数で現在のファイルポインタの位置を取得し、残りの文字数を計算して全て読み込んでいます。Seek関数は次に読み込まれるバイト位置を返すため、LOF(fileNum) - Seek(fileNum) + 1 のように調整して残りの文字数を正確に計算しています。
  • ErrorHandler は、ファイル操作中にエラーが発生した場合に、メッセージを表示し、開いているファイルを確実に閉じるためのエラー処理です。
  • 最後に Kill filePath で作成したテストファイルを削除しています。


※本記事の作成にあたっては、生成AI(Gemini)を活用し一部の文章作成を行っています。最終的な内容は人間による確認・編集を経て掲載しています。


Office VBA リファレンス Input関数

※VBA関数一覧
マクロVBA関数の一覧と解説です、どんな関数があるかは一度は確認しておくとをお勧めいたします。どんな関数があるだけでも知っておけば、詳細の使い方は実際に使うときに調べても良いでしょう。文字列操作…34 分岐…3 型変換…14 データ判定…10 日付時刻…20 配列…6 ファイル操作…14 数学/財務…28 その他……



同じテーマ「VBA関数」の記事

FileLen関数
FreeFile関数
GetAttr関数
Input関数
Loc関数
LOF関数
Seek関数
Spc関数
Tab関数
Abs関数
Int関数


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ