Ejecutar comandos de Shell desde una celda de Excel

Ejecutar comandos de Shell desde una celda de Excel

Tengo un comando de shell para ejecutar un programa con argumentos adicionales.

Shell "C:\Program Files\uvnc bvba\UltraVnc\vncviewer" & " " & Range("$G3")

La celda G3 contiene una dirección IP con la que deseo iniciar el programa.

No tengo problemas para iniciar el comando desde un botón de comando, pero lo que deseo hacer es iniciar el programa con argumentos desde una celda con hipervínculo, usando:

= HYPERLINK("C:\Program Files\uvnc bvba\UltraVnc\vncviewer" & " " & Range("$G3"))

Pero el hipervínculo no puede abrir el programa con argumentos opcionales.

¿Hay alguna forma de abrir el programa desde un hipervínculo con los argumentos opcionales?

Respuesta1

Lo descubrí usando VBA:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("range here")) Is Nothing Then
   Call Shell("program location" & " " & Target)
Else

Ahora hago doble clic en una celda de la hoja que contiene la IP, y eso ejecutará mi programa con esa IP.

Respuesta2

Los hipervínculos de Excel son buenos para abrir páginas web, archivos PDF u otros archivos que sean compatibles con Microsoft Office. Pero existen ciertos problemas al utilizar un hipervínculo para abrir un archivo de comando como EXE, BAT, CMD, VBS, etc. Por ejemplo:

• Se debe negociar un cuadro de diálogo de advertencia con los botones Aceptar/Cancelar.

• No es conveniente agregar argumentos a la línea de comando, especialmente si dependen de otras celdas.

• Puede resultar difícil especificar la ruta del archivo de comandos, especialmente si se mueve el archivo de Excel.

• Cuando se especifica el acceso directo de un archivo de comando, se debe incluir su tipo (.LNK).

• Una ventana de shell parpadeará cuando se abran archivos de script largos o complejos como CMD o VBS.

La técnica que se describe aquí aborda estos problemas sin afectar los hipervínculos estándar de Excel:http://blog.contextures.com/archives/2017/09/14/excel-hyperlinks-run-command-files/

Esta solución agrega texto similar a RUN::COMMAND a la celda del hipervínculo y luego procesa ese texto usando VBA agregado al código de evento FollowHyperlink de la hoja de trabajo. Por ejemplo, si la celda del hipervínculo muestra

This cell is a hyperlink to RUN::"Notepad.exe" "SomeFilePath.BAS"

luego, el archivo BAS especificado se abrirá en el Bloc de notas.

información relacionada