ドライブの種類、総容量、空き容量などを取得

ドライブの種類、総容量、空き容量などを取得する。

VBAでドライブの情報(ドライブ名、容量など)を取得するにはFileSystemObjectを利用して取得することができます。

各情報はDrives コレクションのプロパティから取得しています。
サンプルコードでは各ドライブのドライブ名、ドライブ種類、ファイルシステム、ボリューム名、総容量、使用容量、空き容量を取得しています。
容量はバイト単位となるのでGB(ギガバイト)で算出するようにしています。

'******************************************************************
' ドライブ情報の取得
'******************************************************************
Sub getDriveInfo()
    
    'FileSystemObjectの作成
    Dim oFso As Object
    Set oFso = CreateObject("Scripting.FileSystemObject")
    
    'エラー処理
    On Error GoTo Err_getDriveInfo
    
    'すべてのドライブ情報をループで取得
    Dim oDrive    As Object
    For Each oDrive In oFso.Drives
        Dim sDriveType As String
        
        'ドライブの種類を取得
        Select Case oDrive.DriveType
            Case 0: sDriveType = "Unknown"
            Case 1: sDriveType = "Removable Disk"
            Case 2: sDriveType = "Hard Disk"
            Case 3: sDriveType = "Network Drive"
            Case 4: sDriveType = "CD-ROM Drive"
            Case 5: sDriveType = "RAM Disk"
        End Select
        
        'ドライブ情報の取得
        With oFso.GetDrive(oDrive.DriveLetter)
            Debug.Print "-----------------------------------------------"
            Debug.Print "ドライブ名   :" & oDrive.DriveLetter
            Debug.Print "ドライブ種類  :" & sDriveType
            
            'ドライブの準備ができていない場合はエラーとする
            If oDrive.isready Then
                Debug.Print "ファイルシステム:" & oDrive.FileSystem
                Debug.Print "ボリューム名  :" & oDrive.VolumeName
                
                '容量計算(GB単位)
                Dim lTotalSize As Long
                Dim lAvblSpace As Long
                lTotalSize = Format(.TotalSize / 1024 / 1024 / 1024, "#,###")
                lAvblSpace = Format(.AvailableSpace / 1024 / 1024 / 1024, "#,###")
                
                Debug.Print "総容量     :" & lTotalSize & "GB"
                Debug.Print "使用容量    :" & lTotalSize - lAvblSpace & "GB"
                Debug.Print "空き容量    :" & lAvblSpace&; "GB"
                
            Else
                Debug.Print "(Error)ドライブの準備ができていません。"
            End If
        End With
        
    Next
    On Error GoTo 0
    
Exit Sub

'エラー処理
Err_getDriveInfo:
    Debug.Print "(Error)" & Err.Number & "/" & Err.Description
    Resume Next
End Sub

 ■実行結果