FreeFile関数というものがある
FreeFile関数
前回の
をうpしたところ、即座に2件のツッコミが入った。

じゃなくって、
きなこ(id:kinacco)さん曰く
FreeFile関数がありますよ(^^)
また、ExcelVBAer (id:x1xy2xyz3)さん曰く
FreeFile で空いてるファイル番号が取れるはず。
と。
ははは。そうだったのか。
んで、チョー有名なOffice TANAKAさんのサイトで調べてみた。
FreeFile関数
構文
FreeFile(num)
引数numには、0または1を指定します。解説
Openメソッドで指定する、使用可能なファイル番号を返します。
引数numに0を指定すると、FreeFileは1~255の範囲のファイル番号を返します。
引数numに1を指定すると、FreeFileは256~511の範囲のファイル番号を返します。
引数numを省略すると、0が指定されたものとみなします。
Openメソッドで、既に使用されているファイル番号を指定すると、実行時エラーが発生します。FreeFile関数を使うことで、ファイル番号の重複を避けることができます。
おおお! 便利だなあ!
コードの修正
というわけで、前回のリスト1を改良する。
リスト1 標準モジュール
Public Function getTextFromFile( _
ByVal fileFullName As String, _
ByVal linesCount As Integer) As String()
If Dir(fileFullName) = "" Then Exit Function
Dim n As Integer
n = FreeFile(0) '……(1)'
Open fileFullName For Input As n
Dim tmpArray() As String
ReDim tmpArray(linesCount)
Dim i As Integer
For i = 0 To linesCount - 1
If EOF(n) Then Exit For
Line Input #n, tmpArray(i)
Next
getTextFromFile = tmpArray
Close n
End Function
はい、変えたのは(1)の
n = FreeFile(0)
だけです。
前回、
On Error Resume Next
Dim n As Integer
n = 0
Do
Err.Clear
n = n + 1
Open fileFullName For Input As #n
Loop Until Err.Number = 0
On Error GoTo 0
のこの強引さ(無理矢理エラーを起こさせる)に比べて、何とスッキリしたことか!
おわりに
きなこ(id:kinacco)さん、ExcelVBAer (id:x1xy2xyz3)さん、
あざす!!!!!!!!