Thread: IP Address
View Single Post
  #6   Report Post  
Posted to microsoft.public.excel.programming
Rick Rothstein Rick Rothstein is offline
external usenet poster
 
Posts: 5,934
Default IP Address

Hey! I just finished up some code using the same approach (and, from the
variable names, it looks like from the same source). I took a different end
route than you did, however, choosing to make my code a function instead.
Here is that code...

Function GetMyIPaddress() As String()
Dim X As Long, IPaddress() As String, Query As String
Dim Addresses() As String, objWMIService As Object
Dim ipConfigSet As Object, ipConfig As Object
Addresses = Split("")
Query = "Select IPAddress from Win32_NetworkAdapterConfiguration "
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set ipConfigSet = objWMIService.ExecQuery(Query)
For Each ipConfig In ipConfigSet
If Not IsNull(ipConfig.IPaddress) Then
For X = LBound(ipConfig.IPaddress) To UBound(ipConfig.IPaddress)
'If ipConfig.IPaddress(X) Like "*#*.*#*.*#*.*#*" Then
ReDim Preserve Addresses(UBound(Addresses) + 1)
Addresses(UBound(Addresses)) = ipConfig.IPaddress(X)
'End If
Next
End If
Next
GetMyIPaddress = Addresses
End Function

The code returns a String array containing all the IP address on the system.
In my case, it found two...

192.168.1.3
fe80::40f4:21bf:bd1a:34e8

I don't know what that 2nd one is (I have no real experience with networks),
but the code returned it, so it must be 'something'<g. Anyway, if the OP
wants only ###.###.###.### type IP addresses returned, the code is set up to
do that... he should just remove the apostrophes (comment symbols) from in
front of the two commented out lines in order to activate them... doing that
will make the function only return "normal" looking (at least to me) IP
addresses. To retrieve all the IP addresses on the system (either with or
without those commented out lines), code similar to this should be used...

Dim X As Long, IPaddresses() As String
IPaddresses = GetMyIPaddress
For X = 0 To UBound(IPaddresses)
Debug.Print IPaddresses(X)
Next

where the Debug.Print line would be replaced by the active code the OP wants
to use.

--
Rick (MVP - Excel)


"Steve Yandl" wrote in message
...
Sam,

Provided the PCs are XP or later, this might do what you want:

'------------------------------------

Sub GetIPaddy()

Dim strIPAddress As String
Dim strComputerName As String

strComputerName = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputerName &
"\root\cimv2")

Set colItems = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled =
True")

For Each objItem In colItems
For Each objAddress In objItem.IPAddress
strIPAddress = objAddress
Next
Next

MsgBox strIPAddress

Set colItems = Nothing
Set objWMIService = Nothing

End Sub


'------------------------------------

Steve Yandl



"Sam Wilson" wrote in message
...
Not as straight forward as I'd guessed!

"Rob Bovey" wrote:

"Sam Wilson" wrote in message
...
How can I get my the IP address of a computer using VBA? I was hoping
it'd
be through environ() but it seems not...

Hi Sam,

I've posted an example of how to do this he

http://appspro.com/Tips/NetworkTips.htm#NT2

--
Rob Bovey, Excel MVP
Application Professionals
http://www.appspro.com/

* Professional Excel Development - Second Edition *
http://www.appspro.com/Books/ProExcelDev.htm