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