Для 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