Este código está sacado de una respuesta en nksvaccessolutions.com/Foro:
http://nksvaccessolutions.com/Foro/viewtopic.php?f=8&t=107
Devuelve si no toda, la mayoría de información que buscas.
Copia lo siguiente en un módulo
Sub DatosTecnicos()
On Error Resume Next
Dim StrDevuelve
Dim CadenaDevuelta
Dim oProcs, oProc
Dim System As Variant
'Datos del Procesador:
Set oProcs = GetObject("WINMGMTS:").InstancesOf("Win32_Processor")
For Each oProc In oProcs
CadenaDevuelta = CadenaDevuelta & "Fabricante: " & oProc.Manufacturer & vbCrLf & _
"Modelo: " & oProc.Name & vbCrLf & _
"Descripcion: " & oProc.Description & vbCrLf & _
"Velocidad: " & oProc.CurrentClockSpeed & vbCrLf & _
"ID: " & oProc.ProcessorID & vbCrLf & _
"ID Unico: " & oProc.UniqueID & vbCrLf
Next 'oProc
'***************************************************************************
'
' 16/06/2004
' Simple informacion sobre el sistema y el PC
'***************************************************************************
Set SystemSet = GetObject("winmgmts:").InstancesOf("Win32_ComputerSystem")
For Each System In SystemSet
system_name = System.Caption
system_type = System.SystemType
system_mftr = System.Manufacturer
system_model = System.Model
Next
Set ProcSet = GetObject("winmgmts:").InstancesOf("Win32_Processor")
For Each System In ProcSet
proc_desc = System.Caption
proc_mftr = System.Manufacturer
proc_mhz = System.CurrentClockSpeed
Next
Set BiosSet = GetObject("winmgmts:").InstancesOf("Win32_BIOS")
For Each System In BiosSet
bios_info = System.Version
Next
Set ZoneSet = GetObject("winmgmts:").InstancesOf("Win32_TimeZone")
For Each System In ZoneSet
loc_timezone = System.StandardName
Next
Set OS_Set = GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem")
For Each System In OS_Set
os_name = System.Caption
os_version = System.Version
os_mftr = System.Manufacturer
os_build = System.BuildNumber
os_dir = System.WindowsDirectory
os_locale = System.Locale
os_totalmem = System.TotalVisibleMemorySize
os_freemem = System.FreePhysicalMemory
os_totalvirmem = System.TotalVirtualMemorySize
os_freevirmem = System.FreeVirtualMemory
os_pagefilesize = System.SizeStoredInPagingFiles
Next
StrDevuelve = "Nombre Sistema operativo: " & os_name & vbCrLf _
& "Version: " & os_version & " Build " & os_build & vbCrLf _
& "Fabricante del Sistema: " & os_mftr & vbCrLf _
& "Nombre del Equipo: " & system_name & vbCrLf _
& "Fabricante placa base: " & system_mftr & vbCrLf _
& "Modelo de la placa: " & system_model & vbCrLf _
& "Tipo de placa: " & system_type & vbCrLf _
& "Procesador: " & proc_desc & " " & proc_mftr & " ~" & proc_mhz & "Mhz" & vbCrLf _
& "Procesador" & vbCrLf _
& CadenaDevuelta & vbCrLf _
& "Versión de la Bios: " & bios_info & vbCrLf _
& "Directorio de Windows: " & os_dir & vbCrLf _
& "Local: " & os_locale & vbCrLf _
& "Zona Horaria: " & loc_timezone & vbCrLf _
& "Total memoria Fisica: " & os_totalmem & "KB" & vbCrLf _
& "Memoria física libre: " & os_freemem & "KB" & vbCrLf _
& "Total Memoria Virtual: " & os_totalvirmem & "KB" & vbCrLf _
& "Memoria Virtual libre: " & os_freevirmem & "KB" & vbCrLf
MsgBox StrDevuelve, vbInformation, "Datos Técnicos del ordenador de: " & system_name
End Sub
Y luego desde el formulario que quieras lo llamas así desde un botón,
Private Sub cmd6_Click()
On Error GoTo Cmd6_Click_Err
DatosTecnicos
Cmd6_Click_Exit:
Exit Sub
Cmd6_Click_Err:
MsgBox "Error nº " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
"en procedimiento Cmd6_Click de Documento VBA Form_MiFormulario", vbCritical, "Aviso de error"
Resume Cmd6_Click_Exit
End Sub
Un saludo.