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

     \\servername\path\slump.exe 12345

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

РЕДАКТИРОВАТЬ: В случае, если это имеет значение для принятия решения о том, как развернуть его - я должен отметить, что, возможно, будет использовать 7 или 8 человек. Мы все работаем в одной компании. Я не думаю, что у нас есть сертификат для подписи макросов. Возможно, мы захотим установить и удалить кучу похожих вещей для разных проектов.

1 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .