Attribute VB_Name = "LogicalDiskWmiReport"
Option Explicit

Public Sub LogicalDiskWmiReport()
    Dim objWMIService As Object
    Dim colItems As Object
    Dim objItem As Object
    Dim ws As Worksheet
    Dim propsArr() As String
    Dim c As Long, r As Long

    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set colItems = objWMIService.ExecQuery("SELECT DeviceID, VolumeName, Size, FreeSpace, DriveType FROM Win32_LogicalDisk")

    Set ws = ActiveSheet
    ws.Cells.Clear

    propsArr = Split("DeviceID, VolumeName, Size, FreeSpace, DriveType", ", ")
    For c = LBound(propsArr) To UBound(propsArr)
        ws.Cells(1, c + 1).Value = propsArr(c)
    Next c

    r = 2
    For Each objItem In colItems
        For c = LBound(propsArr) To UBound(propsArr)
            On Error Resume Next
            ws.Cells(r, c + 1).Value = objItem.Properties_(propsArr(c)).Value
            On Error GoTo 0
        Next c
        r = r + 1
    Next objItem

    ws.Rows(1).Font.Bold = True
    ws.Columns.AutoFit

    MsgBox (r - 2) & " Logical Disks row(s) loaded from Win32_LogicalDisk.", vbInformation
End Sub