my vba code is
Public Function notHDD()
Dim m As String
Const test = "WD-WX22AAAAAA"
m = GetHDD
If m <> test Then
notHDD = True
Else
Run this script in a DOS prompt cscript -nologo WMIC_DiskDrive.vbs. Does it print out disk serial numbers (it should)? Similar code should work in Excel VBA script macros.
' Look disks
' cscript -nologo scriptname.vbs
Option Explicit
Dim StdOut: Set StdOut = WScript.StdOut
Dim oWmi: Set oWmi = GetObject("winMgmts:{impersonationLevel=impersonate}!\\.\Root\CIMv2")
Dim oDisks: Set oDisks= oWmi.ExecQuery("Select * from Win32_DiskDrive")
Dim idx
Dim oItem
for idx=0 to oDisks.count-1
Set oItem = oDisks.ItemIndex(idx)
StdOut.writeLine(idx & "=" & oItem.SerialNumber)
next
This is Excel VBA test macro, does it print out disk serials? Compare values to your predefined variable. Serial may have a whitespace letters.
Public Sub DiskDrives()
Dim ws As Worksheet
Dim oWmi As Object
Dim oDisks As Object
Dim oItem As Object
Dim idx As Long
Set ws = Application.ActiveSheet
Set oWmi = GetObject("winMgmts:{impersonationLevel=impersonate}!\\.\Root\CIMv2")
Set oDisks = oWmi.ExecQuery("Select * from Win32_DiskDrive")
For idx = 0 To oDisks.Count - 1
Set oItem = oDisks.ItemIndex(idx)
Debug.Print ("|" & idx & "=" & oItem.SerialNumber & "|")
ws.Cells(4 + idx, 1).Value = "Disk " & idx
ws.Cells(4 + idx, 2).Value = "|" & oItem.SerialNumber & "|"
Next
End Sub