Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: IP Adresse abfrage

IP Adresse abfrage
07.08.2018 23:32:07
Tobias
Hallo,
kann man die iP Adresse des Rechners abfragen auf dem die Excel Datei geöffnet wurde?
Und sagen wenn iP Adresse = 192.168.0.44 dann Range("D5") = 1 Sonst 2
Liebe Grüße
TObias
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: IP Adresse abfrage
07.08.2018 23:54:04
Werner
Hallo Tobias,
die Suche hier im Forum hilft dir weiter. War gleich der zweite Treffer - der Code ist von Tommy.
Den kompletten Code in ein allgemeines Modul einfügen und das Makro "Start" ausführen. Die IP wird in einer Messagebox ausgegeben und der entsprechende Eintrag im Blatt "Tabelle1" (ggf. anpassen) in der Zelle D5 vorgenommen.
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source  _
As Any, ByVal Length As Long)
Public Declare Function GetIpAddrTable Lib "IPHlpApi" (pIPAdrTable As Byte, pdwSize As Long,  _
ByVal Sort As Long) As Long
Const MAX_IP = 5 'To make a buffer... i dont think you have more than 5 ip on your pc..
Type IPINFO
dwAddr As Long ' IP address
dwIndex As Long ' interface index
dwMask As Long ' subnet mask
dwBCastAddr As Long ' broadcast address
dwReasmSize As Long ' assembly size
unused1 As Integer ' not currently used
unused2 As Integer '; not currently used
End Type
Type MIB_IPADDRTABLE
dEntrys As Long 'number of entries in the table
mIPInfo(MAX_IP) As IPINFO 'array of IP address entries
End Type
Type IP_Array
mBuffer As MIB_IPADDRTABLE
BufferLen As Long
End Type
Public Function ConvertAddressToString(longAddr As Long) As String
Dim myByte(3) As Byte
Dim Cnt As Long
CopyMemory myByte(0), longAddr, 4
For Cnt = 0 To 2
ConvertAddressToString = ConvertAddressToString + CStr(myByte(Cnt)) + "."
Next Cnt
ConvertAddressToString = Left$(ConvertAddressToString, Len(ConvertAddressToString) - 1)
End Function
Public Sub Start()
Dim Ret As Long, Tel As Long
Dim bBytes() As Byte
Dim Listing As MIB_IPADDRTABLE
Dim IPtext As String
On Error GoTo END1
GetIpAddrTable ByVal 0&, Ret, True
If Ret 
Gruß Werner
Anzeige
AW: IP Adresse abfrage
08.08.2018 05:25:49
Luschi
Hallo Tobias & Werner,
dieser Code liefert mir das falsche Ergebnis:
- es wird nur die localhost-Adresse 127.0.0.1 ausgelesen
- und selbst die ist noch falsch da nur 127.0.0. ankommt
- Ursache: For Cnt = 0 To 2 muß bis 3 laufen und nicht bis 2
Aber egal: falsch ist & bleibt falsch!
Eine korrekte Lösung, die man noch anpassen müßte, habe ich hier gefunden:
http://www.office-loesung.de/ftopic287145_0_0_asc.php
Der Zugriff auf IpAddrs(UBound(IpAddrs)) würde ausreichen, diese IP-Adresse in eine Zelle zu schreiben.
Gruß von Luschi
aus klein-Paris
Anzeige
Fehlermeldung da 64bit
08.08.2018 21:33:01
Tobias
Hallo,
vielen Dank für die Infos.
Ich habe die Empfehlung von der office-lösung Seite versucht.
Bekomme aber eine Fehlermeldung " Fehler beim Kompilieren ... der Code muss für die Verwendung auf 64bit Systemen aktuallisiert werden .. "
Ich kann das aber nicht :(
Kann mir jemand helfen?
Gruß
TObias
Anzeige
AW: Fehlermeldung da 64bit
09.08.2018 10:20:18
Planlos
Hallo
versuch
Dim o As Object
Dim v As Variant
For Each o In GetObject _
( _
"winmgmts:\\.\root\CIMV2" _
).ExecQuery _
( _
"SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True", , 48 _
)
v = o.DefaultIPGateway
If VarType(v) > &H2000 Then
v = o.IPAddress
Debug.Print v(0) 'Ausgabe in den Direktbereich
End If
Next

Anzeige
Die IP Adresse würde ich entweder...
08.08.2018 07:55:05
Case
Hallo, :-)
... über "cmd /c ipconfig" abrufen: ;-)
IPCONFIG...
Über "StdOut.ReadAll" lässt sich das Ganze auch direkt ausgeben (also kein Umweg über Ausgabe in Datei).
Oder über: ;-)
Windows Management Instrumentation Command...
ShellAndWait "wmic /output:clipboard nicconfig where IPEnabled=True get ipaddress"
Das ist jetzt nicht ausgearbeitet, aber die nötigen Routinen sind ja in den Links!
Servus
Case

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

IP Adresse abfragen in Excel


Schritt-für-Schritt-Anleitung

Um die IP-Adresse des Rechners abzufragen, kannst Du den folgenden VBA-Code verwenden. Füge diesen in ein allgemeines Modul ein und führe das Makro "Start" aus.

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Declare Function GetIpAddrTable Lib "IPHlpApi" (pIPAdrTable As Byte, pdwSize As Long, ByVal Sort As Long) As Long
Const MAX_IP = 5

Type IPINFO
    dwAddr As Long
    dwIndex As Long
    dwMask As Long
    dwBCastAddr As Long
    dwReasmSize As Long
    unused1 As Integer
    unused2 As Integer
End Type

Type MIB_IPADDRTABLE
    dEntrys As Long
    mIPInfo(MAX_IP) As IPINFO
End Type

Public Function ConvertAddressToString(longAddr As Long) As String
    Dim myByte(3) As Byte
    Dim Cnt As Long
    CopyMemory myByte(0), longAddr, 4
    For Cnt = 0 To 3
        ConvertAddressToString = ConvertAddressToString + CStr(myByte(Cnt)) + "."
    Next Cnt
    ConvertAddressToString = Left$(ConvertAddressToString, Len(ConvertAddressToString) - 1)
End Function

Public Sub Start()
    Dim Ret As Long
    Dim Listing As MIB_IPADDRTABLE
    Dim IPtext As String
    On Error GoTo END1
    GetIpAddrTable ByVal 0&, Ret, True
    ' Hier weiterarbeiten mit der IP-Abfrage
    MsgBox "Die IP-Adresse ist: " & ConvertAddressToString(Listing.mIPInfo(0).dwAddr)
END1:
End Sub

In diesem Code wird die IP-Adresse abgerufen und in einer Messagebox angezeigt. Du kannst dann eine Bedingung hinzufügen, um die Zelle D5 entsprechend zu setzen:

If ConvertAddressToString(Listing.mIPInfo(0).dwAddr) = "192.168.0.44" Then
    Range("D5").Value = 1
Else
    Range("D5").Value = 2
End If

Häufige Fehler und Lösungen

  • Fehlermeldung "Fehler beim Kompilieren": Wenn Du mit 64-Bit Excel arbeitest, musst Du den Code entsprechend anpassen. Du kannst z.B. LongPtr anstelle von Long verwenden.

  • Falsche IP-Adresse (nur localhost 127.0.0.1): Stelle sicher, dass Du die Schleife zur Adresskonvertierung auf For Cnt = 0 To 3 änderst, um alle vier Teile der IP-Adresse zu erfassen.


Alternative Methoden

  1. CMD-Befehl verwenden: Du kannst die IP-Adresse auch über die Eingabeaufforderung mit cmd /c ipconfig abrufen. Hier ist ein Beispiel, wie Du dies in VBA umsetzen kannst:

    Shell "cmd /c ipconfig", vbNormalFocus
  2. Windows Management Instrumentation (WMI): Eine alternative Methode ist die Verwendung von WMI, um die IP-Adresse zu erhalten. Hier ein Beispiel:

    Dim o As Object
    Dim v As Variant
    For Each o In GetObject("winmgmts:\\.\root\CIMV2").ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
        v = o.IPAddress
        Debug.Print v(0) ' Ausgabe in den Direktbereich
    Next

Praktische Beispiele

Angenommen, Du möchtest die IP-Adresse in Zelle A1 speichern und die Differenzierung in Zelle D5 vornehmen. Der vollständige Code könnte so aussehen:

Public Sub Start()
    ' ... [Vorheriger Code] ...
    Dim IP As String
    IP = ConvertAddressToString(Listing.mIPInfo(0).dwAddr)
    Range("A1").Value = IP
    If IP = "192.168.0.44" Then
        Range("D5").Value = 1
    Else
        Range("D5").Value = 2
    End If
End Sub

Tipps für Profis

  • Verwendung von Error Handling: Implementiere eine Fehlerbehandlung in Deinem Code, um unerwartete Fehler abzufangen und die Benutzerfreundlichkeit zu erhöhen.

  • Daten überprüfen: Stelle sicher, dass Du die IP-Adresse vor der Verarbeitung überprüfst, um ungültige Werte zu filtern.


FAQ: Häufige Fragen

1. Wie kann ich die IP-Adresse in einem bestimmten Format speichern?
Du kannst die IP-Adresse in Zelle A1 so speichern: Range("A1").Value = ConvertAddressToString(Listing.mIPInfo(0).dwAddr).

2. Was tun, wenn der Code nicht funktioniert?
Überprüfe, ob Du die richtigen Berechtigungen hast und ob Dein System 64-Bit ist. In diesem Fall musst Du den Code anpassen.

3. Kann ich die IP-Adresse auch über PHP auslesen?
Ja, Du kannst PHP verwenden, um die IP-Adresse des Servers auszulesen, z.B. mit $_SERVER['REMOTE_ADDR'].

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige