Attribute VB_Name = "ProcessorWmiReport"
Option Explicit

Public Sub ProcessorWmiReport()
    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 Name, NumberOfCores, NumberOfLogicalProcessors, MaxClockSpeed FROM Win32_Processor")

    Set ws = ActiveSheet
    ws.Cells.Clear

    propsArr = Split("Name, NumberOfCores, NumberOfLogicalProcessors, MaxClockSpeed", ", ")
    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) & " Processor Info row(s) loaded from Win32_Processor.", vbInformation
End Sub