HOLA!!!
Aca tengo armada una funcion que trae el ip externo, creo que es lo que necesitas:
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal sURL As String, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpszOp As String, ByVal lpszFile As String, ByVal lpszParams As String, ByVal LpszDir As String, ByVal FsShowCmd As Long) As Long
Private Const IF_FROM_CACHE = &H1000000
Private Const IF_MAKE_PERSISTENT = &H2000000
Private Const IF_NO_CACHE_WRITE = &H4000000
Private Const Webs As String = "http://bot.whatismyipaddress.com/ http://myip.dnsomatic.com/ http://ip.nfriedly.com/text"
Private Const BUFFER_LEN = 256
Private Function CheckExternalIp() As String
Dim IP As String
Dim URLs() As String: URLs = Split(Webs)
For x = 0 To UBound(URLs)
IP = Gurl(URLs(x))
If IsValidIp(IP) Then Exit For
Next
If IP = vbNullString Then MsgBox "Checkee su conexion a internet por favor, parece que esta fallando.", vbCritical, "Ups!": Unload Me
CheckExternalIp = IP
End Function
Public Function Gurl(sURL As String) As String
'seba123neo
Dim sBuffer As String * BUFFER_LEN, iResult As Integer, sData As String
Dim hInternet As Long, hSession As Long, lReturn As Long
hSession = InternetOpen("vb wininet", 1, vbNullString, vbNullString, 0)
If hSession Then hInternet = InternetOpenUrl(hSession, sURL, vbNullString, 0, IF_NO_CACHE_WRITE, 0)
If hInternet Then
iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
sData = sBuffer
Do While lReturn <> 0
iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
sData = sData + Mid(sBuffer, 1, lReturn)
Loop
End If
iResult = InternetCloseHandle(hInternet)
Gurl = Replace(sData, Chr(0), vbNullString)
End Function
Private Function IsValidIp(strIpAddress) As Boolean
Dim aTmp
IsValidIp = False
aTmp = Split(strIpAddress, ".")
If UBound(aTmp) <> 3 Then Exit Function
For Each field In aTmp
If field > 255 Then Exit Function
Next
IsValidIp = True
End Function
Private Sub Form_Load()
Me.Show
Print CheckExternalIp
End Sub
Copia en un formulario en blanco y vas a ver como funciona! (solo tenes que llamar a CheckExternalIp y lo que esta devuelve es tu ip externo)
GRACIAS POR LEER!!!