¿No sería mejor que al dar doble click en la celda con la dirección ip se invocara inmediatamente putty en esa ip?
Para conseguirlo necesitamos:
- Crear un libro de excel con capacidad de macros (.xlsm)
- Distinguir cuando se trata de una ip
- Personalizar el evento de doble click para que haga la validación correspondiente
- Invocar putty
2. Distinguir cuando se trata una ip.
Dando doble click en Thisworkbook dentro del explorador de proyectos,
agregamos la siguiente función Boolean al libro
Private Function Is_IPV4_Address(ByVal pstrIp As String) As Boolean
Dim lavarCompos As Variant
Dim varCompo As Variant
Dim intValue As Integer
On Error Resume Next
Is_IPV4_Address = False
lavarCompos = Split(Trim(pstrIp), ".")
If UBound(lavarCompos) = 3 Then
For Each varCompo In lavarCompos
intValue = CInt(varCompo)
If intValue >= 0 And intValue <= 255 Then
Is_IPV4_Address = True And CInt(lavarCompos(0)) > 0
Else
Is_IPV4_Address = False
Exit For
End If
Next
End If
End Function
Esta sencilla función simplemente dará un valor de verdadero cuando se le proporcione como argumento una cadena separable por puntos(.) y que cada una de las cadenas entre los puntos sea un punto. Adicionalmente deben ser 4 ternas de numeros, es decir algo así como una dirección ip.
3. Personalizar el evento doble clic.
Basta con agregar un evento con la siguiente cabecera:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As BooleanEs decir vamos a hacer nuestra validacion previamente al evento doble clic. Aqui es importante notar el parametro Cancel, ya que en caso de que el contenido de la celda en que se hace doble clic (el parametro Target) sea una dirección ip invocaremos nuestro codigo y cancelaremos la acción predeterminada del doble clic dandole el valor de True al parametro Cancel.
4. Invocar putty
Eso lo conseguimos invocando el procedimiento Shell asi:
Shell "C:\Archivos de Programa\putty\putty.exe " & Target.Text, vbNormalFocusHe de hacer notar que efectivamente la ruta de putty se encuentra en hard code. Sin embargo esto lo puede cambiar cada quien en la implementación de este ejemplo.
Así sin mas preambulos nuestro evento quedaría de la siguiente forma:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Is_IPV4_Address(Trim(Target.Text)) Then
Shell "C:\Archivos de Programa\putty\putty.exe " & Target.Text, vbNormalFocus
Cancel = True
End If
End Sub
Y se veria asi:
Pueden descargar el archivo aqui
0 comentarios:
Publicar un comentario