Möchte gerne die Festplatten-Seriennummer mit VBA, Excel 2016 64 Bit(!) auslesen.
Ich habe versucht folgendes Makro von der 32 Bit-Version umzuschreiben:
Declare Function GetVolumeInformationA Lib "kernel32" _
(ByVal lpRootPathName As String, _
ByVal lpVolumeNameBuffer As String, _
ByVal nVolumeNameSize As Long, _
lpVolumeSerialNumber As Long, _
lpMaximumComponentLength As Long, _
lpFileSystemFlags As Long, _
ByVal lpFileSystemNameBuffer As String, _
ByVal nFileSystemNameSize As Long) As Long
Sub SerienNummer()
Dim SerialNumber As Long
GetVolumeInformationA "C:\", vbNullString, 0, SerialNumber, _
0, 0, vbNullString, 0
MsgBox SerialNumber
End Sub
'-----------------
Und zwar so:
Declare PtrSafe Function GetVolumeInformationA Lib "kernel32" _
(ByVal lpRootPathName As String, _
ByVal lpVolumeNameBuffer As String, _
ByVal nVolumeNameSize As LongPtr, _
lpVolumeSerialNumber As LongPtr, _
lpMaximumComponentLength As LongPtr, _
lpFileSystemFlags As LongPtr, _
ByVal lpFileSystemNameBuffer As String, _
ByVal nFileSystemNameSize As Long) As LongPtr
Sub SerienNummer()
Dim SerialNumber As LongPtr
GetVolumeInformationA "C:\", vbNullString, 0, SerialNumber, _
0, 0, vbNullString, 0
MsgBox SerialNumber
End Sub
'-------------
Jetzt bekomme ich aber die Fehlermeldung "object variable or with block variable not set".
Danke für die Hilfe!
Manfred