VB6・VBA関数メモ:FreeFile関数

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

この関数はOpenステートメントに指定するファイル番号を取得する際に使用します。

Openステートメントを実行した後でないと、次のファイル番号が取得できないようなので、
複数ファイルを同時にオープンする場合は
FreeFile→Open、FreeFile→Openのような順序に実行する必要があるので注意です。


概要

FreeFile([RangeNumber])
機能 使用可能なファイル番号を取得
引数 RangeNumber (省略時は0)
0を指定した場合:1〜255を返す
0以外を指定した場合:256〜511を返す
Variant型
戻り値 ファイル番号 Integer型


使用例

説明 記述例 出力
ファイル番号を取得して
ファイルを開く
Dim n   As Integer

n = FreeFile
Debug.Print n

Open "Sumple.txt" For Input As #n

Close #n
1


動作検証

説明 記述例 出力
FreeFile関数を連続して使用しても
同じ番号しか返さない

(同じ番号なので2つ目の
ファイルオープンでエラーとなる)
Dim n1   As Integer
Dim n2   As Integer
Dim n3   As Integer

n1 = FreeFile
n2 = FreeFile
n3 = FreeFile

Debug.Print n1
Debug.Print n2
Debug.Print n3

Open "Sumple1.txt" For Input As #n1
Open "Sumple2.txt" For Input As #n2
Open "Sumple3.txt" For Input As #n3

Close
1
1
1
エラー
Openステートメント実行後は
次のファイル番号を取得できる
Dim n1  As Integer
Dim n2  As Integer
Dim n3  As Integer

n1 = FreeFile
Debug.Print n1
Open "Sumple1.txt" For Input As #n1

n2 = FreeFile
Debug.Print n2
Open "Sumple2.txt" For Input As #n2

n3 = FreeFile
Debug.Print n3
Open "Sumple3.txt" For Input As #n3

Close #n1, #n2, #n3
1
2
3
RangeNumberが0以外の場合で
値が異なっても256〜511の範囲の
ファイル番号しか取得しない
Dim n1  As Integer
Dim n2  As Integer
Dim n3  As Integer

n1 = FreeFile(1)
Debug.Print n1
Open "Sumple1.txt" For Input As #n1

n2 = FreeFile(-1)
Debug.Print n2
Open "Sumple2.txt" For Input As #n2

n3 = FreeFile(100)
Debug.Print n3
Open "Sumple3.txt" For Input As #n3

Close #n1, #n2, #n3
256
257
258


コメント
コメントする








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