У меня есть форма, в которой пользователь может просматривать различные документы, связанные со счетом (PO, счет-фактура, инструкции по транспортировке ...).Для упрощения я назову их документом № 1, документом № 2, документом № 3.Каждый документ сохраняется в определенном каталоге.
В форме счета есть 3 кнопки (button_doc1, button_doc2, button_doc # 3)
Я хочу следующее поведение:
- при щелчке левой кнопкой мыши пользователь может предварительно просмотреть документ (отчет открывается при событии щелчка правой кнопкой мыши)
- при щелчке правой кнопкой мыши открывается контекстное меню, в котором предлагается открыть каталог, содержащий документ.
Поэтому я пытаюсь с контекстным меню, определенным следующим образом:
Sub CreateFormShortcutMenu_OpenReportDir()
Dim cmbRightClick As Office.CommandBar
Dim cmbControl As Office.CommandBarControl
' Create the shortcut menu.
Set cmbRightClick = CommandBars.Add("cmdShortCutMenu_FormOpenReportDir", msoBarPopup, False, True)
With cmbRightClick
' Add the DeleteRecord command.
Set cmbControl = .Controls.Add(msoControlButton, , , , True)
With cmbControl
.BeginGroup = True
.Caption = "Open dir"
.OnAction = "=CallbackOpenDocDir()"
.FaceId = 106
End With
End With
Set cmbControl = Nothing
Set cmbRightClick = Nothing
End Sub
Интересно, возможно ли использовать одно и то же контекстное меню на 3 кнопках (чтобы избежать избыточного кода)Как я могу получить кнопку (имя или ссылка), которая вызвала обратный вызов.
Public Function CallbackOpenDocDir()
dim strDocName as string
'code to get the button / doc name
select case strDocName
case "Doc#1"
openFileExplorer doc1Dir
case "Doc#2"
openFileExplorer doc2Dir
case "Doc#3"
openFileExplorer doc3Dir
end select
End Function
Спасибо за ваши идеи.