Como hacer un ping desde excel

Mi pregunta es como puedo hacer para hacer un ping a una ping cada "x" minutos y si esta maquina responde me ponga en la celda siguiente un estado 1 y si no responde me lo ponga en estado 2

2 Respuestas

Respuesta
1
Disculpa que te conteste hasta ahora pero estaba fuera de la ciudad. Lo que pides nunca lo he hecho con Excel, yo prefiero usar otro programa el cual el resultado me lo guarda en un archivo y desde Excel importo los resultados que quiero. Sin embargo voy a tratar de averiguarte si es posible y si es posible te consigo un ejemplo.
[email protected]
[email protected]
Acabo de encontrarme esta función y creo que te puede servir. Falta crear una macro que se ejecute cada por tiempo y actualize la función para que logres lo que necesitas. Este es el código:
Public Function f_EquipoResponde(str_Equipo As String) As Boolean
'Esta función recibe un nombre de equipo (ya sea nombre en sí o IP y, por medio de PING, revisa si el
'equipo responde o no
Dim obj_Shell As Object 'Objeto shell para ejecutar ping y enviar la salida a un fichero
'temporal
Dim obj_FileSystem As Object 'Objeto FileSystem para abrir y borrar el fichero temporal
Dim obj_Fichero As Object 'Objeto File para leer el fichero temporal
Dim str_ContenidoFichero As String 'Se volcará en esta variable el contenido del fichero temporal
Dim str_FicheroTemporal As String 'Sirve para establecer la ruta y nombre del fichero temporal
'Creamos los objetos FileSystem y Shell
Set obj_Shell = CreateObject("WScript.Shell")
Set obj_FileSystem = CreateObject("Scripting.FileSystemObject")
'Establecemos el fichero temporal en la ruta de este libro de Excel y con el nombre "temp.txt"
str_FicheroTemporal = ThisWorkbook.Path & "\temp.txt"
' Call Shell("cmd /k ""c:\windows\system32\ping.exe -n 1 " & str_Equipo & """ > " & _
' str_FicheroTemporal, vbMaximizedFocus)
'Ejecutamos el ping volcando la salida en el fichero temporal. Sólo esperaremos un eco ("-n 1")
obj_Shell.Run "cmd /c ping -n 1 " & str_Equipo & " > """ & _
str_FicheroTemporal & """", 0, True
'Abrimos el fichero temporal sobre el objeto fichero
Set obj_Fichero = obj_FileSystem.OpenTextFile(str_FicheroTemporal, 1, False)
'Volcamos el contenido del fichero temporal en str_ContenidoFichero
str_ContenidoFichero = obj_Fichero.ReadAll
'Cerramos el fichero temporal y vaciamos su variable
obj_Fichero.Close
Set obj_Fichero = Nothing
'Borramos el fichero temporal y vaciamos los objetos Shell y FileSystem
obj_FileSystem. DeleteFile (str_FicheroTemporal)
Set obj_FileSystem = Nothing
Set obj_Shell = Nothing
'Si encontramos la cadena "perdidos = 0" significa que el equipo respondió y por tanto la función
'devuelve True, en caso contrario significa que no respondió el equipo y por tanto devuelve False
If InStr(str_ContenidoFichero, "perdidos = 0") > 0 Then
f_EquipoResponde = True
Else
f_EquipoResponde = False
End If
End Function
La puedes usar de la siguiente forma: desde A1 hasta Ax puedes poner las direcciones IP, en B1 hasta Bx digitas la función =f_EquipoResponde(A1). Por último en C1 hasta Cx puedes poner la fórmula =Si(B1="Verdadero",1,0).
Espero te sirva.
[email protected]
[email protected]
Muchas Gracias por tomarte un tiempo para responderme la función me esta funcionando correctamente, lo que si te agradecería es la macro para ejecutarla. Espero tu respuesta para dar mi calificación Gracias otra vez
La macro puede ser como esta.
Private Sub Worksheet_Activate()
Application.OnTime Now() + TimeValue("00:00:05"), "MyProc"
End Sub
Esto llama un proceso cada 5 segundos cuando la hoja donde están las IP está activa. Si quieres lo puedes cambiar. El proceso sería el siguiente.
Sub MyProc()
Application.Calculation = xlCalculationAutomatic
End Sub
En las pruebas que he hecho no ha sido necesario aplicar la macro ya que la función queda en espera de los resultados automáticamente.
Respuesta

Excelente, se aplica muy bien.

Si pudieras, yo la usa para hacer ping a 80 IP`s, me gustaría que al llegar a la ultima IP se ejecutara otra macro que tengo que me lo esta filtrando las que no responden y me lo envía por correo y que sea cíclico cada media hora.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas