Inicie el ejecutable desde el menú contextual de Excel 2007/2010 con el contenido de la celda como argumento

Inicie el ejecutable desde el menú contextual de Excel 2007/2010 con el contenido de la celda como argumento

Tanto para Excel 2007 como para 2010. Quiero hacer clic derecho en una celda y que una de las opciones sea "Ejecutar Slump". Y cuando el usuario elija eso, lanzará el ejecutable:

     \\servername\path\slump.exe 12345

Donde 12345 es el contenido de la celda en la que se hizo clic derecho. ¿Alguien puede darme una descripción general de cómo agregar eso al menú contextual y pasar el contenido de la celda al VBA que inicia el proyecto, y cuál es la mejor manera para que un usuario agregue la funcionalidad a una copia de Excel? una máquina donde él/ella es el administrador.

EDITAR: En caso de que haya alguna diferencia a la hora de decidir cómo implementarlo, debo mencionar que tal vez habrá 7 u 8 personas usándolo. Todos trabajamos para la misma empresa. No creo que tengamos un certificado para firmar macros. Probablemente querremos instalar y desinstalar un montón de cosas similares para diferentes proyectos.

Respuesta1

Si la funcionalidad solo se necesita en un libro de trabajo; puede simplemente agregar las macros a ese libro y guardarlo como xslm. Eso sería lo más fácil.

Pero si la funcionalidad es necesaria para varios libros de trabajo, entonces querrás crearla como un complemento (código que se puede cargar en la copia de Excel de cualquier persona) o tal vez como una macro compartida, según tus necesidades.

El código es muy simple. Cuando se carga el libro de trabajo (o complemento) habilitado para macros, agregue una entrada al menú contextual (menú contextual):

Private Sub Workbook_Open()
With Application.CommandBars("Cell")
    With .Controls.Add(Type:=msoControlButton)
        .BeginGroup = True
        .Caption = "Run Slump"
        .OnAction = "doTheSlump"
    End With
End With
End Sub

Siempre que los libros estén cerrados (o desactivados), elimine el menú contextual:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  With Application.CommandBars("Cell")
    .Controls("Run Slump").Delete
  End With
End Sub

El código se ejecuta, debe estar en un módulo vba. En este ejemplo, abrirá el cuaderno usando el contenido de la celda como ruta de archivo:

Sub doTheSlump()
retval = Shell("C:\WINDOWS\notepad.exe " + Selection.Value, 1)
End Sub

información relacionada