Пользовательские дополнительные действия с ячейками в Excel 2010

Я хотел бы расширить MS Excel 2010, добавив еще несколько «Дополнительных действий с ячейками». (доступно через щелчок правой кнопкой мыши > Дополнительные действия с ячейкой). В частности, я бы хотел, чтобы Excel:

  1. распознавать пяти-восьмизначные номера как номера деталей с помощью действия: «Открыть URL-адрес технических документов»
  2. распознавать строку «OR ## #####» (# вместо цифры) как ссылку на заказ с действиями: «Открыть файл спецификации» и «Открыть файл материала» (оба файла Excel расположены по указанным путям во внутренней сети)

Теперь я понятия не имею, как это запрограммировать. Я подозреваю, что нужен какой-то фрагмент XML и, возможно, код VB. Код VB не будет проблемой - у меня есть макросы, выполняющие эти функции для Excel 2003, но я понятия не имею, где их разместить.

Пожалуйста, дайте мне несколько советов, я спросил Google, но не могу получить ответ, кажется, что «Дополнительные действия» - довольно распространенная фраза :)


person Forseti    schedule 27.09.2011    source источник


Ответы (1)


Этого можно добиться, добавив в книгу обработчик событий щелчка правой кнопкой мыши.

В модуле Workbook добавьте этот код

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    Dim cBut As CommandBarButton
    Dim v As Variant

    On Error Resume Next

    v = Target

    ' Remove any previously added menu items
    Application.CommandBars("Cell").Controls("Open URL to technical docs").Delete
    Application.CommandBars("Cell").Controls("Open material file").Delete

    ' save cell value for use by called macro
    CellValue = v

    ' If cell matches criteria add menu item and set macro to call on click
    If IsNumeric(v) Then
        If v >= 10000 And v <= 99999999 Then
            Set cBut = Application.CommandBars("Cell").Controls.Add(Temporary:=True)

            With cBut
                .Caption = "Open URL to technical docs"
                .Style = msoButtonCaption
                .OnAction = "OpenRef"
            End With
        End If
    ElseIf v Like "OR ## #####" Then
        Set cBut = Application.CommandBars("Cell").Controls.Add(Temporary:=True)

        With cBut
            .Caption = "Open material file"
            .Style = msoButtonCaption
            .OnAction = "OpenMat"
        End With
    End If
End Sub

В стандартный модуль добавьте этот код

Public CellValue As Variant

' replace MsgBox code with your logic to open files
Sub OpenRef()
    MsgBox "Open Reference Doc code here for " & CellValue
End Sub

Sub OpenMat()
    MsgBox "Open Material File code here for " & CellValue
End Sub
person chris neilsen    schedule 28.09.2011