Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
700to704
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
700to704
700to704
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Funktion IP auslesen

Funktion IP auslesen
23.11.2005 22:47:31
Ingo
Hallo allerseits,
nachfolgende Funktion(en) verwende ich unter W2k und Office 2000 zum auslesen der IP. Klappt auch hervorragend.
Unter XP und Office 2003 stürzt Excel bei Aufruf der

Sub testen ab.
Trotz Level gut ist mir das eine Nummer zu hoch.
Bitte um Hilfe
Danke und Gruß, Ingo
Private Type WSAData
wVersion As Integer
wHighVersion As Integer
szDescription(0 To 256)
szSystemStatus(0 To 128)
wMaxSockets As Integer
dwVendorInfo As Long
End Type
Private Declare 

Function WSAStartup Lib "WSOCK32.DLL" ( _
ByVal wVersionRequired As Long, _
lpWSAData As WSAData) _
As Long
Private Declare 

Function WSACleanup Lib "WSOCK32.DLL" () As Long
Private Declare 

Function gethostname Lib "WSOCK32.DLL" ( _
ByVal szHost As String, _
ByVal dwHostLen As Long) _
As Long
Private Declare 

Function gethostbyname Lib "WSOCK32.DLL" ( _
ByVal szHost As String) _
As Long
'Achtung: Abgewandelte API-Funktion
Private Declare 

Sub CopyMemoryIP Lib "kernel32" Alias "RtlMoveMemory" ( _
hpvDest As Any, _
ByVal hpvSource As Long, _
ByVal cbCopy As Long)

Function GetIPAddress() As String
Dim wsa As WSAData
Dim rVal As Long
Dim sHost As String * 256
Dim lp As Long
Dim lpa As Long
Dim IpAdr(0 To 3) As Byte
rVal = WSAStartup((2 + &H100), wsa)
If rVal = 0 Then
gethostname sHost, 256
lp = gethostbyname(sHost)
If lp Then
CopyMemoryIP lpa, lp + 16, 4
CopyMemoryIP IpAdr(0), lpa, 4
GetIPAddress = CStr(IpAdr(0)) + "." + _
CStr(IpAdr(1)) + "." + _
CStr(IpAdr(2)) + "." + _
CStr(IpAdr(3))
End If
WSACleanup
End If
End Function


Sub testen()
MsgBox GetIPAddress
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Funktion IP auslesen
23.11.2005 23:52:18
K.Rola
Hallo,
dein Code führt unter allen Excelversionen(97-2003) zum Fehlerbericht an MS, warum auch immer.
Versuchs mal so:
Option Explicit
Private Declare Function GetTcpTable Lib "iphlpapi.dll" (ByRef pTcpTable As Any, ByRef pdwSize As Long, ByVal bOrder As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dst As Any, src As Any, ByVal bcount As Long)
Private Declare Function lstrcpyA Lib "kernel32" (ByVal RetVal As String, ByVal Ptr As Long) As Long
Private Declare Function lstrlenA Lib "kernel32" (ByVal Ptr As Any) As Long
Private Declare Function inet_ntoa Lib "wsock32.dll" (ByVal addr As Long) As Long
Private Type MIB_tr
dwst As Long
dwla As Long
dwlp As Long
dwra As Long
dwrp As Long
End Type
Private Const ERSC As Long = 0
Private Function Gstr(ByVal la As Long) As String
Gstr = String$(lstrlenA(ByVal la), 0)
Call lstrcpyA(ByVal Gstr, ByVal la)
End Function
Private Function GIA(Adresse As Long) As String
GIA = Gstr(inet_ntoa(Adresse))
End Function
Function GetIPs() As String
Dim tr As MIB_tr
Dim bb() As Byte
Dim lb As Long
Dim lg As Long
Dim lz As Long
Dim lc As Long
Dim sa As String
Dim sf() As String
Dim la As Long
Dim ix As Long
Dim ba As Boolean
Call GetTcpTable(ByVal 0&, lb, 1)
GetIPs = ""
la = 0
If lb > 0 Then
ReDim Bf(0 To lb - 1) As Byte
If GetTcpTable(Bf(0), lb, 1) = ERSC Then
lg = LenB(tr)
CopyMemory lz, Bf(0), 4
For lc = 1 To lz
ba = False
CopyMemory tr, Bf(4 + _
(lc - 1) * lg), lg
With tr
sa = GIA(.dwla)
For ix = 1 To la
ba = (sa = sf(ix))
Next ix
If Not ba And Left(sa, 1) <> "0" _
And sa <> "127.0.0.1" Then
GetIPs = GetIPs & _
GIA(.dwla) & ","
la = la + 1
ReDim Preserve sf(la)
sf(la) = sa
End If
End With
Next lc
GetIPs = Left(GetIPs, _
Len(GetIPs) - 1)
Else
MsgBox "Oops, unbekannter Fehler!"
End If
End If
End Function
Sub teste()
MsgBox "Meine IP: " & GetIPs()
End Sub
Gruß K.Rola

Anzeige
AW: Funktion IP auslesen
24.11.2005 07:22:28
Ingo
Hallo K.Rola,
unter XP funktioniert es schon 'mal gut.
Nachher noch der Test in der Firma - aber
ich denke doch, dass das Problem damit
gelöst ist.
Klasse, Danke und einen schönen Tag
Ingo
AW: Funktion IP auslesen
24.11.2005 17:29:27
Luschi
Hallo K.Rola,
ich habe zwischen dem Breitband-Modem und der Netzwerkkarte noch 1 nichtprogrammierbaren Router. Wenn ich z.B. mit VNC-Server arbeite,
muß ich meinen Gegenüber (der den VNC-Client konfiguriert) die Router-IP
nennen. Der Router bekommt die IP per DNS vom Breitband-Modem und dieses Gerät holt sich die IP automatisch beim Einschalten vom Provider.
Kann man die dem Router zugeteilte IP auch per Vba auslesen?
Gruß von Luschi
aus klein-Paris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige