ファイルシステムオブジェクトの利用
以前の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 ]