VBA zum herauslesen der Computer Serien-Nummer oder Ähnliches?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet
'In ähnlicher Weise gibt 'kernel32' noch andere Dinge zurück
Declare Function GetComputerName& Lib "kernel32" Alias _
  "GetComputerNameA" (ByVal lbbuffer As String, nsize As Long)

Sub CptName()
  Dim sTxt As String * 64
  Call GetComputerName(sTxt, 64)
  MsgBox sTxt
End Sub

Tron1701 
Beitragsersteller
 16.10.2019, 06:10

Vielen Dank für Deine Rückmeldung!

Bräuchte noch ein Ausgabescript (siehe zuvor), für Modul1.

Tron1701 
Beitragsersteller
 19.10.2019, 15:34
@IchMalWiederXY

Hallo,

zunächst 1000 Dank für Deine Bemühungen.

Die Verlinkung habe ich nicht getestet, da kein MAC.

Des Weiteren habe ich mit Deinen Vorschlag Experimentiert. Als Ergebnis wird nur eine "1" ausgegeben. Außerdem ist der "ComputerName" nicht das "gelbe vom Ei", da dieser Modellabhängig ist und mehrmals Vorkommen kann.

Mit "ProductCode" und "UserName" habe ich mir was gebastelt (wie bereits erwähnt keine VBA-Kenntnisse), das auch funktioniert. Ob der "ProductCode" sich auf den PC oder der Windows-Variante bezieht, entzieht sich meiner Kenntnis. Wäre aber allerdings eine Option, da dieses auch an meinen zweiten, veralteten PC getestet habe, aber mit unterschiedlichen Windows-Varianten. Es besteht die Möglichkeit (intern) an 2 weiteren PC`s, dies zu Testen.

Der "ProductCode" ist zumindest unterschiedlich.

"ProductVersion" ist eine Zahlenkombination, die auch interessant wäre, lässt sich aber aufgrund meiner Kenntnisse, nicht einfach abrufen (VBA-Syntaxmäßig).

Jedenfalls werde ich, wie es die Zeit erlaubt, Varianten testen.

Ich werde mich auf jeden Fall, zum gegebenen Zeitpunkt wieder melden, bzw. Dein Engagement (Beurteilungsmäßig) honorieren. Schade, dass manche, trotz gelegentlichen sehr zeitraubenden Recherchen zur Lösungsfindung, seitens dem Fragesteller dies nicht honoriert wird.

Gruß Tron

IchMalWiederXY  21.10.2019, 20:48
@Tron1701

Die "MAC" Adresse hat nichts mit "Apple" zu tun. Mit dieser Adresse bezeichnet man die "eigentlich" eineindeutige HW Nummer des Computers. Da man diese inzwischen auch schon "gefaked" ist die Bedeutung verringert. Allerdings sollte es für deine Zwecke nützlich sein.

Tron1701 
Beitragsersteller
 24.10.2019, 12:43
@IchMalWiederXY

Hallo,

habe spezifisch mein Problem (mit Abbildung) deklariert.

Habe zusätzlich nach Recherchen eine zusätzliche Option gefunden, jedoch funktionieren beide Varianten nicht. Weshalb entzieht sich meiner VBA-Syntax Kenntnisse.

Hast Du eine Idee was falsch sein könnte?

Ich werde Dich im Anschluss Prämieren, für den Hinweis dem auslesen der MAC Adresse.

Sicherlich werde ich die Frage, mit den Abbildungen, in "GuteFrage" nochmals stellen.

Nochmals Danke!

Tron1701 
Beitragsersteller
 15.10.2019, 15:46

Hallo,

nochmals das ganze, was den Schriftverkehr betrifft?!

Es ist Wichtig nur eine Nummer von einem PC zu erhalten, nicht ein Name oder Computernamen, den es mehrfach in einem Unternehmen gibt.

Ich bräuchte eine Ausgabe auf eine Zelle!

Des Weiteren kann ich weitere Sicherheitsvorkehrungen treffen.

Brauche aber eine Ausgabe auf eine Zelle, so ähnlich.

Private Sub Workbook_Open() If Range("A1") = "" Then Range("A1") = GetComputerNameA() Range("A2") = Date End If Range("A3") = GetComputerNameA() Range("A4") = Date End Sub

Dies funktioniert nicht. Abbildung konnte ich nicht beifügen ???

Andere Idee

Gruß Tron

Code in Quelltextform.

Variante 1:

Workbook

Private Sub Workbook_Open()
If Tabelle1.Range("A1") = "" Then
Tabelle1.Range("A1") = GetMACAddress()
Tabelle1.Range("A2") = Date
End If
Tabelle1.Range("A3") = GetMACAddress()
Tabelle1.Range("A4") = Date
End Sub

Modul1

Sub read_it()
Dim objWMIService        As Object
Dim objItem              As Object
Dim colItems             As Object
    On Error Resume Next
    Set objWMIService = GetObject("winmgmts:\\" & "." & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery _
                   ("Select * from Win32_NetworkAdapterConfiguration")
    For Each objItem In colItems
        MsgBox "Caption: " & objItem.Caption & Chr(10) & _
               "MAC Address: " & objItem.MACAddress
    Next
End Sub

Variante 2:

Workbook

Private Sub Workbook_Open()
If Range("A1") = "" Then
Range("A1") = GetMACAddress()
Range("A2") = Date
End If
Range("A3") = GetMACAddress()
Range("A4") = Date
End Sub

Modul1

Function GetMACAddress() As String
   Dim StrComputer As String
     
   StrComputer = "."
   Set objWMIService = GetObject("winmgmts:" _
       & "{impersonationLevel=impersonate}!\\" & StrComputer & "\root\cimv2")
   
   Set objWIMSet = objWMIService.ExecQuery _
       ("Select * from Win32_NetworkAdapterConfiguration")
   
   For Each objWMI In objWIMSet
      If objWMI.Properties_("IPConnectionMetric") = 1 Then
         GetMACAddress = objWMI.Properties_("MACAddress").Value
         Exit Function
      End If
   Next objWMI
End Function

Gruß Tron

Hallo,

reibe mich da auf, da keinerlei VBA-Syntax Kenntnisse, was das auslesen der MAC Adresse betrifft.

Viele Varianten, ohne Erfolg, versucht.

Wo liegt der Fehler, bei beiden Varianten ?

Variante 1, Fehlermeldung.

Bild zum Beitrag

Variante 2, keine Ausgabe, aber auch keine Fehlermeldung.

Bild zum Beitrag

Gruß Tron

 - (Computer, Microsoft Excel, VBA)  - (Computer, Microsoft Excel, VBA)

IchMalWiederXY  24.10.2019, 18:33

Dein "GetMACAddress" befindet sich im "Modul1". Dein anderer Code im "Workbook" Daher kennen die sich nicht.
Schreibe "Public Function GetMac…"  und ergänze deinen Aufruf mit
Modul1.GetMac...

Tron1701 
Beitragsersteller
 28.10.2019, 07:10
@IchMalWiederXY

Hi,

weis nicht wie und wo, denn wie bereits erwähnt kein VBA-Plan.

Ich werde meine Code im Textformat liefern, wäre schön wenn Du den Text verändern würdest, so wie es sein soll.

1000 Dank im Voraus!

Tron1701 
Beitragsersteller
 28.10.2019, 14:17
@Tron1701

"Suboptimierer" hat mir, in einer zweiten gestellte Frage (mit anderen Wortlaut) bei "GuteFrage", die Lösung geliefert.

Ich möchte mich nochmals für Dein Engagement bedanken!

Gruß Tron