VB6・VBA関数メモ:Input関数

Input関数についてメモしておきます。

この関数はファイルから指定の文字数の文字列を取得する際に使用します。
改行文字やカンマ(,)区切りのデータやダブルクォーテーション(")等もそのまま読み込みます。

InputステートメントLine Inputステートメントというのもありますが、
こちらは1行毎の文字列を取得する際にしようします。
名前は似ていますが、動作が異なるので場合によって使い分けましょう。

また、バイト数を指定して読み込みたい場合はInputB関数を使用します。


概要

Input(Number, #FileNmber)
機能 ファイルから指定した文字数の文字列を取得する。
引数 Number ファイルから読み込む文字数 Variant型
FileNmber Openステートメントで指定したファイル番号 Variant型
戻り値 読み込んだ文字列 Variant型(String型)


使用例

説明 記述例 出力
(Sumple.txt)
12345
abcde
あいうえお
!"#$%&'()=
^~¥|<>{}[]
ファイルから1文字ずつ文字列を取得
Dim str As String
Dim n   As Integer

n = FreeFile
Open "D:¥Sumple.txt" For Input As #n

str = ""
Do Until EOF(n)
    str = str & Input(1, #n)
Loop

Debug.Print str

Close #n
12345
abcde
あいうえお
!"#$%&'()=
^~¥|<>{}[]
ファイルの先頭から10文字(改行文字含)を取得
Dim str As String
Dim n   As Integer

n = FreeFile
Open "D:¥Sumple.txt" For Input As #n

str = Input(10, #n)

Debug.Print str

Close #n
12345
abc
ファイルの3バイト目から10文字(改行文字含)を取得
Dim str As String
Dim n   As Integer

n = FreeFile
Open "D:¥Sumple.txt" For Input As #n

Seek #n, 3
str = Input(10, #n)

Debug.Print str

Close #n
345
abcde


動作検証

説明 記述例 出力
ファイルの最大位置を超えた文字数を指定するとエラー
On Error GoTo ERR_HANDLER

    Dim str As String
    Dim n   As Integer
    
    n = FreeFile
    Open "D:¥Sumple.txt" For Input As #n
    
    str = ""
    cnt = 0
    Do Until EOF(n)
        str = str & Input(100, #n)
    Loop
    
    Debug.Print str

ERR_HANDLER:
    Close #n
    
    If Err > 0 Then Debug.Print Error
ファイルにこれ以上データがありません。
指定の文字数を0にすると無現ループになるので注意
(※右の例で無現ループとなるのでCtrl+Breakキーで強制停止して下さい)
Dim str As String
Dim n   As Integer

n = FreeFile
Open "D:¥Sumple.txt" For Input As #n

str = ""
cnt = 0
Do Until EOF(n)
    str = str & Input(0, #n)
    
    DoEvents '←操作不可防止
Loop

Debug.Print str

Close #n

指定数をマイナスにするとエラー
On Error GoTo ERR_HANDLER

    Dim str As String
    Dim n   As Integer
    
    n = FreeFile
    Open "D:¥Sumple.txt" For Input As #n
    
    str = ""
    cnt = 0
    Do Until EOF(n)
        str = str & Input(-1, #n)
        
        DoEvents
    Loop
    
    Debug.Print str

ERR_HANDLER:
    Close #n
    
    If Err > 0 Then Debug.Print Error
プロシージャの呼び出し、または引数が不正です。


コメント
コメントする








    
この記事のトラックバックURL
トラックバック