Inicie o executável do menu de contexto do Excel 2007/2010 com o conteúdo da célula como argumento

Inicie o executável do menu de contexto do Excel 2007/2010 com o conteúdo da célula como argumento

Para Excel 2007 e 2010. Quero clicar com o botão direito em uma célula e escolher uma das opções "Run Slump". E quando o usuário escolher isso, ele iniciará o executável:

     \\servername\path\slump.exe 12345

Onde 12345 é o conteúdo da célula que foi clicada com o botão direito. Alguém pode me dar uma visão geral de como adicionar isso ao menu de contexto e passar o conteúdo da célula para o VBA que inicia o projeto, e qual é a melhor maneira para um usuário adicionar a funcionalidade a uma cópia do Excel onde uma máquina onde ele/ela é o administrador.

EDIT: Caso faça diferença na decisão de como implantá-lo - devo mencionar que talvez 7 ou 8 pessoas o utilizem. Todos trabalhamos para a mesma empresa. Não creio que possuamos um certificado para assinar macros. Provavelmente desejaremos instalar e desinstalar um monte de coisas semelhantes para projetos diferentes.

Responder1

Se a funcionalidade for necessária apenas em uma pasta de trabalho; você pode simplesmente adicionar as macros a essa pasta de trabalho e salvá-la como um xslm. Isso seria mais fácil.

Mas se a funcionalidade for necessária para várias pastas de trabalho, você desejará torná-la um suplemento (código que pode ser carregado na cópia do Excel de qualquer pessoa) ou talvez uma macro compartilhada, dependendo de suas necessidades.

O código é muito simples. Quando a pasta de trabalho habilitada para macro (ou complemento) for carregada, adicione uma entrada ao menu de contexto (menu do botão direito):

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

Sempre que as pastas de trabalho forem fechadas (ou desativadas), remova o menu de contexto:

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

O código executado deve estar em um módulo vba. Neste exemplo, ele abrirá o notebook usando o conteúdo da célula como caminho de arquivo:

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

informação relacionada