hakeの日記

Windows環境でプログラミングの勉強をしています。

EXCEL VBAメモ - 複数ファイルを同時オープンする場合のFileNumberの取得

マクロを組んでいて少し悩んだのでメモ
テキストファイルを読み書きする際にはFreeFile関数でFileNumberを取得して、ファイルに割り当てて使用するが、以下の様に事前にFileNumberを取得すると書き込み用ファイルのオープンで「ファイルは既に開かれています」というエラーになった。
原因は、変数 fni および fno に同じ値 1 が割り当てされていた為。

Sub test()
    Dim fni As Long
    Dim fno As Long

    fni = FreeFile
    fno = FreeFile
    Open ThisWorkbook.path & "\test1.csv" For Input As #fni
        Open ThisWorkbook.path & "test2.csv" For Append As #fno
            '処理
        Close #fno
    Close #fni
End Sub

 

この様な場合は、最初のFileNumberでオープンした後に次のFileNumberを取得する。

    fni = FreeFile
    Open ThisWorkbook.path & "\test1.csv" For Input As #fni
        fno = FreeFile
        Open ThisWorkbook.path & "test2.csv" For Append As #fno