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

0

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

     \servername\path\slump.exe 12345

Em que 12345 é o conteúdo da célula que foi clicada com o botão direito do mouse. 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 lança 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: No caso de fazer a diferença para decidir como implantá-lo - devo mencionar que haverá talvez 7 ou 8 pessoas usando-o. Nós todos trabalhamos para a mesma empresa. Não acho que possuímos um certificado para assinar macros. Provavelmente, vamos querer instalar e desinstalar um monte de coisas semelhantes para projetos diferentes.

    
por Levin Magruder 16.04.2012 / 18:49

1 resposta

1

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 xslm. Isso seria mais fácil.

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

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

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 bloco de anotações usando o conteúdo da célula como um caminho de arquivo:

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