VBA でファイルの読み書きを行うことは多々あります。CSV ファイルをエクセルシートのセルに貼り付けることなどよくあることです。
ここでは、ファイルを開くときに使用するファイル番号について、まとめてみました。
スポンサーリンク
ファイル番号
MSDN によるとファイル番号は次のように説明されています。
https://msdn.microsoft.com/ja-jp/library/office/gg264568.aspx
ファイル番号
ファイルを開くために Open ステートメントで使用される番号。他のアプリケーションからアクセスできないファイルに対しては、1 ~ 255 の範囲のファイル番号を使用します。他のアプリケーションからアクセスできるファイルには、256 ~ 511 の範囲のファイル番号を使用します。
この説明に違和感もありますが、ファイル番号とは上記の通りです。あくまでも指針と言うことなのでしょうか?
空いているファイル番号を取得する FreeFile 関数
未使用のファイル番号を直接指定して次のようにファイルを開くこともできます。
' ファイル番号1でファイルを開く Open "ファイルパス" For Output As #1 ' ファイル番号1に書き込み Write #1, "調子のっちゃって~" ' ファイル番号1を閉じる。閉じると、ファイル番号1は再利用できる Close #1
ほとんどの場合はファイルを開く数は事前に分かっているので、直接指定しても問題はありませんが、同時に開くファイル数が不定の場合は、FreeFile 関数によって空いているファイル番号を取得することができます。
FreeFile 関数
Open ステートメントで使用できる次のファイル番号を表す整数型 (Integer) の値を返します。
構文
FreeFile[ (rangenumber) ]
オプションの rangenumber 引数は、返される次の空きファイル番号を取得する範囲を指定するバリアント型 (Variant)の値です。既定値の 0 を指定すると、1 ~ 255 の範囲のファイル番号が返されます。1 を指定すると、256 ~ 511 の範囲のファイル番号が返されます。
お詫び
面倒なので試していませんが、MSDN によるとファイル番号の最大値は511のようです。ただし、同時に開けるファイルの最大数も511であるかは未検証です。m(__)m どなたかご存知の方いらっしゃいましたら教えてください m(__)m