FreeFile関数というものがある
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)さん、
あざす!!!!!!!!