Starten Sie die ausführbare Datei aus dem Kontextmenü von Excel 2007/2010 mit dem Zelleninhalt als Argument

Starten Sie die ausführbare Datei aus dem Kontextmenü von Excel 2007/2010 mit dem Zelleninhalt als Argument

Für Excel 2007 und 2010. Ich möchte mit der rechten Maustaste auf eine Zelle klicken und eine der Optionen „Slump ausführen“ auswählen. Und wenn der Benutzer dies auswählt, wird die ausführbare Datei gestartet:

     \\servername\path\slump.exe 12345

Wobei 12345 der Inhalt der Zelle ist, auf die mit der rechten Maustaste geklickt wurde. Kann mir jemand einen Überblick darüber geben, wie ich das zum Kontextmenü hinzufüge und den Inhalt der Zelle an das VBA übergebe, das das Projekt startet, und wie ein Benutzer die Funktionalität am besten zu einer Kopie von Excel auf einem Computer hinzufügt, auf dem er der Administrator ist.

EDIT: Falls es einen Unterschied macht, wie es eingesetzt wird, sollte ich erwähnen, dass es vielleicht 7 oder 8 Leute sein werden, die es verwenden. Wir arbeiten alle für dieselbe Firma. Ich glaube nicht, dass wir ein Zertifikat zum Signieren von Makros besitzen. Wir werden wahrscheinlich eine Reihe ähnlicher Dinge für verschiedene Projekte installieren und deinstallieren wollen.

Antwort1

Wenn die Funktionalität nur in einer Arbeitsmappe benötigt wird, können Sie die Makros einfach zu dieser Arbeitsmappe hinzufügen und sie als XSLM speichern. Das wäre am einfachsten.

Wenn die Funktionalität jedoch für mehrere Arbeitsmappen benötigt wird, sollten Sie sie je nach Bedarf entweder als Add-In (Code, der in jede beliebige Excel-Kopie geladen werden kann) oder vielleicht als freigegebenes Makro erstellen.

Der Code ist sehr einfach. Wenn die Arbeitsmappe (oder das Add-In) mit Makros geladen ist, fügen Sie dem Kontextmenü (Rechtsklickmenü) einen Eintrag hinzu:

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

Wenn die Arbeitsmappe geschlossen (oder deaktiviert) wird, entfernen Sie das Kontextmenü:

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

Der auszuführende Code sollte sich in einem VBA-Modul befinden. In diesem Beispiel wird das Notebook geöffnet und der Inhalt der Zelle als Dateipfad verwendet:

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

verwandte Informationen