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