ファイルシステムオブジェクトの利用

以前のTipでは、ボリュームシリアルナンバーの取得にWin32APIを使用していましたが、ファイルシステムオブジェクトを利用するともっと簡単だったりします。

その他にも、ドライブの準備状態の取得や、フォルダのコピーなど、ドライブ・フォルダ・ファイルの操作に関するプロパティ・メソッドが数多く存在していて便利なオブジェクトです。

プロジェクトに実装するには

'======[ ファイルシステムオブジェクトの作成
Set objFileSystem = CreateObject("Scripting.FileSystemObject")

で、オブジェクトを作成するか、プロジェクトの参照設定で「Microsoft Scripting Runtime」を指定してください。

リファレンスはMSDNライブラリを「FileSystemObject」で検索するか、[Visual Basicドキュメント] - [Visual Basicの使用方法] - [プログラミングガイド] - [Visual Basicを使ってできること] - [ドライブ、フォルダ、ファイルの処理]を参照してください。

ココのページも参考になると思います。

サンプルは、指定されたパスのドライブの準備が完了しているかのチェックを行っています。

サンプル(32bit)

Private Function DriveReadyCheck(strCopyPath) As Boolean

    Dim objFileSystem As Object
    Dim objDrive As Object
    Dim strDriveName As String
    
    DriveReadyCheck = False
    On Error GoTo Err_p
    
    '======[ ファイルシステムオブジェクトの作成
    Set objFileSystem = CreateObject("Scripting.FileSystemObject")
    
    '======[ ドライブ名の取得
    With objFileSystem
        strDriveName = .GetDriveName(.GetAbsolutePathName(strCopyPath))
    End With
    If Trim(strDriveName) = "" Then
        Exit Function
    End If
    
    '======[ ドライブオブジェクトの作成
    Set objDrive = objFileSystem.GetDrive(strDriveName)
    
    '======[ ドライブの準備判定
    If objDrive.IsReady Then
        DriveReadyCheck = True
    End If
    
    '======[ オブジェクトの解放
    Set objFileSystem = Nothing
    Set objDrive = Nothing
    
    Exit Function
    
Err_p:

End Function

サンプル解説

GetAbsolutePathNameメソッドで、完全なパスを取得して、GetDriveNameメソッドでドライブ名を取得します。
(GetDriveNameメソッドは引数の文字列でドライブ名を返します。そのため省略されたパスの解決をしてくれないので、予めGetAbsolutePathNameメソッドで、完全なパスを取得しています)

そして取得したドライブ名のドライブオブジェクトを作成して、IsReadyプロパティで準備が完了しているか判定をしています。


[ Window Close ]