このページでは下表のプロパティについて説明します。これらはすべて ドライブオブジェクトのプロパティになります。
| 内容 | プロパティ | 
|---|---|
| ドライブ名取得 | drive.DriveLetter | 
| ルートフォルダ取得 | drive.RootFolder | 
| ドライブパス取得 | drive.Path | 
| ドライブタイプ取得 | drive.DriveType | 
| ドライブ状態取得 | drive.IsReady | 
| トータルサイズ取得 | drive.TotalSize | 
| 利用可能領域取得 | drive.AvailableSpace | 
| 空き領域取得 | drive.FreeSpace | 
| ボリューム名取得 | drive.VolumeName | 
使用方法
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 を割りあて
 

上記サンプルマクロを実行すると各ドライブの状況がイミディエイトウィンドウへ表示されます。