VB6・VBA関数メモ:InputB関数

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

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

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

また、文字数を指定して読み込みたい場合はInput関数を使用します。


概要

InputB(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 & InputB(1, #n)
Loop

Debug.Print StrConv(str, vbUnicode)

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

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

str = InputB(10, #n)

Debug.Print StrConv(str, vbUnicode)

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 = InputB(10, #n)

Debug.Print StrConv(str, vbUnicode)

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 & InputB(100, #n)
    Loop
    
	Debug.Print StrConv(str, vbUnicode)

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 & InputB(0, #n)
    
    DoEvents '←操作不可防止
Loop

Debug.Print StrConv(str, vbUnicode)

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 & InputB(-1, #n)
        
        DoEvents
    Loop
    
	Debug.Print StrConv(str, vbUnicode)

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


コメント
コメントする








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