Código
Private Sub Command1_Click() Label1.Caption = "Cerrando conexión..." WS.Close DoEvents WS.Connect "checkip.dyndns.org", 80 Label1.Caption = "Conectando..." DoEvents End Sub Private Sub WS_Connect() Label1.Caption = "Conectado!" WS.SendData "GET / HTTP/1.1" & vbCrLf & vbCrLf End Sub Private Sub WS_DataArrival(ByVal bytesTotal As Long) Dim Buffer As String Dim Datos() As String WS.GetData Buffer, vbString If InStr(Buffer, "Current IP") <> 0 Then Datos = Split(Buffer, "<") Datos = Split(Datos(6), ":") Label1.Caption = Trim(Datos(1)) Else Label1.Caption = "IP no encontrada" End If End Sub Private Sub WS_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) On Error Resume Next Label1.Caption = "Error!" MsgBox Number & " - " & Description End Sub
El código es de lo más simple, se conecta a la web checkip.dyndns.org y manda un GET al index, explora el código que devuelve el webserver para mostrar tan solo la IP pública. Es un método que no me gusta porque en el momento que checkip.dyndns.org deje de funcionar o cambie el formato se jodió nuestro código.
El código no es mío, alguien de este foro me lo pasó hace bastante tiempo por MP y no recuerdo el nombre, sorry.