| Drive 操作 |
■Contents
01 Drivesコレクション 02 GetDriveName メソッド 03 GetAbsolutePathName メソッド 04 GetDrive メソッド 05 DriveType プロパティ 06 ShareName プロパティ 07 DriveLetter プロパティ 08 VolumeName プロパティ 09 FreeSpace プロパティ
機能利用可能なすべてのドライブのコレクションです。このコレクションは、メンバの取得のみ可能です。
解説
リムーバブルメディアは、ドライブにメディアがセットされていなくても Drives コレクションに追加されます。
サンプルコード
次のコードは、Drives コレクションを取得し、For Each...Next ステートメントを使ってコレクションに繰り返し処理を行う例です。
Sub ShowDriveList()
Dim myFileSystem As New Scripting.FileSystemObject
Dim myDrive As Scripting.Drive
Dim strName As String
Dim strMsg As String
On Error GoTo err_ShowDriveList
For Each myDrive In myFileSystem.Drives
strMsg = strMsg & myDrive.DriveLetter & " - "
If myDrive.DriveType = 3 Then
strName = myDrive.ShareName
Else
strName = myDrive.VolumeName
End If
strMsg = strMsg & myDrive.DriveType & ":" & strName & vbCrLf
Next
Debug.Print strMsg
Exit Sub
err_ShowDriveList:
strName = Err.Description
Resume Next
End Sub
【実行結果】
A - 1:ディスクが準備されていません。 C - 2:ローカル ディスク D - 2:ローカル ディスク E - 4:ディスクが準備されていません。 Z - 3:\\F11471\Music
【書式】object.GetDriveName(path)
機能指定されたパスが置かれているドライブの名前の入った文字列を返します。
GetDriveName メソッドの構文の指定項目 指定項目 説明 object FileSystemObject オブジェクトの名前を指定します。 path ドライブ名を取り出すパスを指定します。
解説
ドライブが判断できない場合は、長さ 0 の文字列 ("") が返されます。
サンプルコード
Sub ShowVolumeInfo_01()
Dim myFileSystem As New Scripting.FileSystemObject
Debug.Print myFileSystem.GetDriveName("D:\Access2003\Mail\Mail_自動送信")
End Sub
【実行結果】D:が表示されます。
【書式】object.GetAbsolutePathName(pathspec)
機能指定したパスに対して、完全な一意のパス名を返します。
GetAbsolutePathName メソッドの構文の指定項目 指定項目 説明 object FileSystemObject オブジェクトの名前を指定します。 pathspec 完全で一意的なパス名を取得するパスを指定します。
次の表は、カレント ディレクトリが c:\mydocuments\Sample だった場合を例にとり、GetAbsolutePathName メソッドにより返されるパスを示します。
引数 pathspec 返されるパス "c:" "c:\mydocuments\Sample" "c:.." "c:\mydocuments" "c:\\\" "c:\" "c:*.*\may97" "c:\mydocuments\Sample\*.*\may97" "c:\..\..\mydocuments" "c:\mydocuments" "d:\Access2003\Mail\Mail_自動送信" d:\Access2003\Mail\Mail_自動送信 "\Access2003\Mail\Mail_自動送信" C:\Access2003\Mail\Mail_自動送信 "Mail_自動送信" "c:\mydocuments\Sample\Mail_自動送信"
【書式】object.GetDrive drivespec
機能指定されたパスに含まれるドライブに対応する Drive オブジェクトを返します。
GetDrive メソッドの構文の指定項目 指定項目 説明 object FileSystemObject オブジェクトの名前を指定します。 drivespec ドライブ名 (c)、コロン付きのドライブ名 (c:)、コロンとパスの区切り文字の付いたドライブ名 (c:\)、任意のネットワーク共有名 (\\computer2\share1) のいずれかを指定します。
解説ネットワーク共有を指定した場合は、その共有が存在するかどうかが確認されます。
引数 drivespec が指定可能な形式になっていない場合、および指定したドライブが存在しない場合は、エラーが発生します。
通常のパス名を使って GetDrive メソッドを呼び出すには、次の例のようなコードを記述して、引数 drivespec に指定できる文字列を取得してください。
DriveSpec = GetDriveName(GetAbsolutePathName(Path))
【書式】object.DriveType
object には、Drive オブジェクトの名前を指定します。
機能指定されたドライブの種類を示す値を返します。
サンプルコード
次のコードは、DriveTypeと DriveLetterプロパティの使用例です。
Sub ShowDriveType()
Dim myFileSystem As New Scripting.FileSystemObject
Dim myDrive As Scripting.Drive
Dim strType As String
Set myDrive = myFileSystem.GetDrive("c:")
Select Case myDrive.DriveType
Case 0: strType = "不明"
Case 1: strType = "リムーバブル ディスク"
Case 2: strType = "ハード ディスク"
Case 3: strType = "ネットワーク ドライブ"
Case 4: strType = "CD-ROM"
Case 5: strType = "RAM ディスク"
End Select
Debug.Print "ドライブ " & myDrive.DriveLetter & ": - " & strType
End Sub
【実行結果】ドライブ C: - ハード ディスク と表示されます。
【書式】object.ShareName
object には、Drive オブジェクトの名前を指定します。
機能指定されたドライブのネットワーク共有名を返します。
解説
object にネットワーク ドライブでないドライブを指定すると、長さ 0 の文字列 ("") が返されます。
【書式】object.DriveLetter
objectには、Drive オブジェクトの名前を指定します。
機能物理ローカル ドライブまたはネットワーク共有のドライブ名を返します。値の取得のみ可能です。
解説
指定したドライブにドライブ名が関連付けられていなかった場合は、長さ 0 の文字列 ("") が返されます。
【書式】object.VolumeName [= newname]
機能指定されたドライブのボリューム名を設定します。値の取得も可能です。
VolumeName プロパティの構文の指定項目 指定項目 内容 object Drive オブジェクトの名前を指定します。 newname 省略可能です。object に指定したドライブの新しい名前を指定します。
サンプルコード
次のコードは、CドライブのVolumeNameを"ローカル ディスク"に変更しています。
Sub SetVolumeName()
Dim myFileSystem As New Scripting.FileSystemObject
Dim myDrive As Scripting.Drive
Set myDrive = myFileSystem.GetDrive("c:")
myDrive.VolumeName = "ローカル ディスク"
End Sub
【書式】object.FreeSpace
object には、Drive オブジェクトの名前を指定します。
機能指定されたドライブまたはネットワーク共有でユーザーが使用できるディスク空き容量を返します。値の取得のみ可能です。
サンプルコード
次のコードは、FreeSpace プロパティの使用例です。
Sub ShowFreeSpace()
Dim myFileSystem As New Scripting.FileSystemObject
Dim myDrive As Scripting.Drive
Dim drvPath As String
Dim strMsg As String
drvPath = "D:\Access2003\Mail"
Set myDrive = myFileSystem.GetDrive(myFileSystem.GetDriveName(drvPath))
strMsg = "Drive " & myDrive & " - " & myDrive.VolumeName & vbCrLf
strMsg = strMsg & "空き容量: " & FormatNumber(myDrive.FreeSpace / 1024 * 1024, 0) & " MB"
Debug.Print strMsg
End Sub
【実行結果】
Drive D: - ローカル ディスク
空き容量: 13,556,334,592 MB
と表示されます。