このページでは下表のプロパティについて説明します。これらはすべて ドライブオブジェクトのプロパティになります。
内容 | プロパティ |
---|---|
ドライブ名取得 | drive.DriveLetter |
ルートフォルダ取得 | drive.RootFolder |
ドライブパス取得 | drive.Path |
ドライブタイプ取得 | drive.DriveType |
ドライブ状態取得 | drive.IsReady |
トータルサイズ取得 | drive.TotalSize |
利用可能領域取得 | drive.AvailableSpace |
空き領域取得 | drive.FreeSpace |
ボリューム名取得 | drive.VolumeName |
使用方法
上記のプロパティを使用するには、以下に示すいずれかの方法で事前にドライブオブジェクトを取得しておく必要があります。
- fso.GetDrive を使用し、ドライブ名からドライブオブジェクトを取得します。
⇒ 『 ドライブオブジェクトの取得 』 参照 - fso.Drives によりドライブオブジェクトのコレクションを取得し、ループ処理などでそれぞれのドライブオブジェクトへアクセスします。
⇒ 当ページ下の使用例『ドライブ名などを一覧表示する例』参照
各プロパティの説明
drive.DriveLetter
物理ドライブ名またはネットワーク共有のドライブ名を取得します。fso.Drives プロパティにより取得したドライブオブジェクトのコレクションに対して繰り返し処理を行う場合に、現在のドライブがどのドライブかを判断するのに使用したりします。
⇒ 当ページ下の使用例『ドライブ名などを一覧表示する例』参照
drive.RootFolder
指定されたドライブのルートフォルダを表すフォルダオブジェクトを取得します。ルートフォルダのフォルダオブジェクトを取得することで、指定されたドライブ配下でのファイル操作やフォルダ操作が可能になります。
Sub sample_ef042_t1()
Dim fso As Object
Dim driveObj As Object
Set fso = CreateObject("Scripting.FileSystemObject")
For Each driveObj In fso.Drives
Debug.Print "ドライブ名 :" & driveObj.DriveLetter
'ドライブの状態チェック
If driveObj.IsReady Then
Debug.Print "状態 :使用可"
'ルートフォルダ直下のファイルとフォルダ数を表示
With driveObj.RootFolder
Debug.Print "ファイル数 :" & .Files.count
Debug.Print "フォルダ数 :" & .SubFolders.count
End With
Else
Debug.Print "状態 :使用不可"
End If
Next
Set fso = Nothing
Set driveObj = Nothing
End Sub
Setステートメント For Each…Next Withステートメント
drive.Path
ドライブのパスを取得します。
drive.DriveType
指定されたドライブの種類を示す値を取得します。
値 | 説明 |
---|---|
0 | 不明 |
1 | リムーバブル ディスク |
2 | ハード ディスク |
3 | ネットワーク ドライブ |
4 | CD/DVD-ROM |
5 | RAM ディスク |
drive.IsReady
指定されたドライブの準備ができているか否かを True または False で返します。CD/DVD-ROM ドライブなどの場合、メディアがセットされてアクセスできる状態の場合のみ True を返します。
drive.TotalSize
ドライブまたはネットワーク共有の総容量をバイト単位で取得します。キロバイト単位にするには 2^10 = 1024、メガバイト単位にするには 1024*1024 で除算します。
drive.AvailableSpace
指定されたドライブまたはネットワーク共有でユーザーが使用できるディスク容量をバイト単位で取得します。
drive.FreeSpace
指定されたドライブまたはネットワーク共有でユーザーが使用できるディスク空き容量をバイト単位で取得します。
drive.VolumeName
指定されたドライブのボリューム名の設定および取得をします。
すべてのドライブ名とその容量などを一覧表示する例
fso.GetDrives メソッドによりドライブコレクションを取得した後、For Each…Next により各ドライブ名とその情報をイミディエイトウィンドウへ表示する例です。
内臓DVDドライブ(Eドライブ)にはメディアが入っていないため、drive.IsReady は False となります。メディアが入っていると True が返ってきます。
Sub sample_fs042_01()
Dim fso As Object
Dim driveObj As Object
Dim strType As String
Set fso = CreateObject("Scripting.FileSystemObject")
For Each driveObj In fso.Drives
With driveObj
Debug.Print "ドライブ:" & .DriveLetter
Select Case .DriveType
Case 0: strType = "不明"
Case 1: strType = "リムーバブル ディスク"
Case 2: strType = "ハード ディスク"
Case 3: strType = "ネットワーク ドライブ"
Case 4: strType = "CD/DVD-ROM"
Case 5: strType = "RAM ディスク"
End Select
Debug.Print "タイプ :" & strType
If .IsReady Then
Debug.Print "状態 :使用可"
Debug.Print "総容量 :" & _
Round(.TotalSize / 1024 ^ 3, 1) & " GB"
Debug.Print "空き容量:" & _
Round(.FreeSpace / 1024 ^ 3, 1) & " GB"
Else
Debug.Print "状態 :使用不可"
End If
End With
Next
'オブジェクト変数のクリア
Set fso = Nothing
Set driveObj = Nothing
End Sub
Setステートメント
For Each…Next
Withステートメント
Round関数
テスト環境のドライブは以下のとおりです。
- Cドライブ ・・・ 内臓ハードディスク
- Dドライブ ・・・ 内臓ハードディスク
- Eドライブ ・・・ 内臓DVDドライブ(メディアなし)
- Fドライブ ・・・ 外付けSDカード
- Zドライブ ・・・ ネットワーク上の ¥¥Server¥Users¥Public を割りあて
上記サンプルマクロを実行すると各ドライブの状況がイミディエイトウィンドウへ表示されます。