本ページには広告が含まれています。

VBA FileAttr 関数 ファイルのアクセスモードを取得

VBA FileAttr 関数 ファイルのアクセスモードを取得

Excel VBAの「FileAttr 関数」について解説します。

スポンサーリンク

FileAttr 関数とは

Excel VBA の FileAttr 関数は、Openステートメントで開かれたファイルのアクセスモードを示す値 (Long) を返します。

この関数を使用することで、ファイルがどのように開かれているかを確認することができます。

FileAttr 関数の構文や引数の設定と実際の使い方について具体的に解説していきたいと思います。

FileAttr 関数(Visual Basic for Applications リファレンス)

構文(引数と戻り値)

Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。

構文

FileAttr(filenumber, returntype)

引数

引数 説明
filenumber【必須】Openステートメントで開かれたファイルに
割り当てられたファイル番号を指定します
returntype【必須】返す情報の種類を示す以下の数値を指定します
1 : ファイルのアクセスモードを取得します
2 : OS のファイルハンドルを取得します

Returntype 2 は 16 ビットシステムの場合のみ指定できます。32 ビットシステムではサポートされていないため、エラーが発生しますので注意してください。

戻り値

戻り値説明
数値
(Long)
returntype1 の場合、ファイルのアクセスモードを示す値
returntype2 の場合、OS が割り当てたファイルハンドル値

returntype が 1 の場合に返される数値は、次のアクセスモードであることを示します。

ファイルのアクセスモード一覧表

ファイル アクセスモード
1入力モード(Input)
2出力モード(Output)
4ランダムアクセスモード(Random)
8追加モード(Append)
32バイナリモード(Binary)

解説(使用例)

FileAttr 関数の使い方について、サンプルを使って解説します。

FileAttr 関数サンプル

FileAttr 関数の基本的な使い方をサンプルで確認しましょう。

ファイルのアクセスモードを取得する例

ファイルのアクセスモードを取得する基本的なサンプルコードです。

'■FileAttr関数使用例(アクセスモード取得)
Sub FileAttr_Sample()
    Dim fileNo As Integer
    Dim filePath As String
    Dim strMode As String

    filePath = "C:\VBA_test\bas\Module1.bas"
    ' FreeFile でファイルの空き番号取得
    fileNo = FreeFile
    ' Open ステートメントでファイルを開く
    Open filePath For Input As #fileNo
    
    ' ファイルのアクセスモードを取得
    Select Case FileAttr(fileNo, 1)
        Case 1
            strMode = "入力モード (Input) "
        Case 2
            strMode = "出力モード (OutPut) "
        Case 4
            strMode = "ランダムアクセスモード (Random) "
        Case 8
            strMode = "追加モード (Append) "
        Case 32
            strMode = "バイナリモード (Binary) "
        Case Else
            strMode = "不明なアクセスモード"
    End Select
    ' 結果を表示
    MsgBox "ファイルは「" & strMode & "」で開かれています"
    ' ファイルを閉じる
    Close #fileNo
End Sub

このコードを実行して表示される MsgBox 画像がこちらです。

FileAttr_Sample 実行で表示されるメッセージ画像

【コードの補足説明】

・7行目、ファイルのパスを変数に格納します。

・9行目、FreeFile関数を使用して使用可能なファイル番号を取得して変数に格納しています。

・11行目、Openステートメントで指定パスのファイルを Input モードで開いています。

・14行目、FileAttr(fileNo, 1) はファイルのアクセスモード値をFileAttr 関数で取得しています。

・14~27行目、Select Case の条件(アクセスモード値)による分岐処理です。条件に一致するテキストを取得して変数に格納しています。 この例では Input で開いているので Case 1 となります。

・29行目、結果を MsgBox に表示します。

・31行目、Closeステートメントでファイルを閉じます。

11行目の Open filePath For Input As #fileNo の Input を OutPut や Append などに変更して実行してみてください。このサンプルコードを参考にして、ファイルのアクセスモードを確認してみてください。

【注意点】
・対象のファイルが正しく開かれていない場合、エラーが発生します。
・この例のように、ファイル番号をFreeFile関数を使用して取得すれば空いている番号を自動取得できます。

おわりに

Excel VBA の FileAttr 関数は、ファイルのアクセスモードやオペレーティングシステムのファイルハンドルを取得するために使用されます。以下に具体的な使いどころをいくつか挙げておきます。

・適切なファイル操作を行うことために、事前にアクセスモードを確認する際に利用します。

・ファイル操作のエラーを特定するため、デバッグやトラブルシューティングの際に、ファイルが正しいモードで開かれているかを確認する際に使用します。

・16ビットシステムでのファイル操作の際に OSのファイルハンドルを取得する必要がある場合に利用します。

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらからご参照ください。

スポンサーリンク
スポンサーリンク

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!