Запустить исполняемый файл из контекстного меню Excel 2007/2010 с содержимым ячейки в качестве аргумента

Запустить исполняемый файл из контекстного меню Excel 2007/2010 с содержимым ячейки в качестве аргумента

Для Excel 2007 и 2010. Я хочу щелкнуть правой кнопкой мыши по ячейке и выбрать один из вариантов "Run Slump". И когда пользователь выбирает этот вариант, он запускает исполняемый файл:

     \\servername\path\slump.exe 12345

Где 12345 — это содержимое ячейки, по которой был сделан щелчок правой кнопкой мыши. Может ли кто-нибудь дать мне обзор того, как добавить это в контекстное меню и передать содержимое ячейки в VBA, который запускает проект, и каков наилучший способ для пользователя добавить функционал в копию Excel на машине, где он/она является администратором.

EDIT: Если это имеет значение при принятии решения о том, как его развернуть, я должен упомянуть, что им будут пользоваться, возможно, 7 или 8 человек. Мы все работаем в одной компании. Я не думаю, что у нас есть сертификат для подписи макросов. Мы, вероятно, захотим установить и удалить кучу похожих вещей для разных проектов.

решение1

Если функционал нужен только в одной книге; вы можете просто добавить макросы в эту книгу и сохранить ее как xslm. Это было бы проще всего.

Но если эта функциональность необходима для нескольких рабочих книг, то вам следует сделать ее либо надстройкой (кодом, который можно загрузить в любую копию Excel), либо, возможно, общим макросом, в зависимости от ваших потребностей.

Код очень простой. Когда рабочая книга (или надстройка) с включенным макросом загружена, добавьте запись в контекстное меню (меню правой кнопки мыши):

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

Всякий раз, когда рабочие книги закрываются (или деактивируются), удаляйте контекстное меню:

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

Код, который нужно запустить, должен быть в модуле vba. В этом примере он откроет блокнот, используя содержимое ячейки в качестве пути к файлу:

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

Связанный контент