Public WithEvents App As Application
Private Sub App_WindowBeforeRightClick(ByVal Sel As Selection, Cancel As Boolean)
УдалениеМеню ' Удаляем старые пункт меню, если они существуют
If Sel.Document.Name = ThisDocument.Name Then ' обработчик будет срабатывать в любом документе, а нужен только текущий, поэтому проверка имени документа
If Sel.Style.Type = wdStyleTypeParagraph Then ' Проверка местонахождения курсора - в данном случае текст
If Len(Sel.Text) > 0 Then ' Проверка выделен какой-либо текст или нет
МенюВыделение ' Выполняется при выделении текста
Else
МенюСимвол ' Выполняется в случае когда ничего не выделено
End If
End If
End If
End Sub
' при выходе из документа (переключении на другой документ) меню также удаляется
Private Sub App_WindowDeactivate(ByVal Doc As Word.Document, ByVal Wn As Word.Window)
If Doc.Name = ThisDocument.Name Then УдалениеМеню
End Sub
Public wordApp As New ОбработкаПКМ
Sub AUTOOPEN()
Set wordApp.App = Application
End Sub
Sub AUTOCLOSE()
УдалениеМеню
End Sub
Sub УдалениеМеню()
Dim Меню As CommandBar, ПунктМеню As CommandBarControl
For Each Меню In Application.CommandBars
If Меню.Type = msoBarTypePopup Then
For Each ПунктМеню In Меню.Controls
If ПунктМеню.BuiltIn = False Then ПунктМеню.Delete
Next ПунктМеню
End If
Next Меню
End Sub
Sub МенюСимвол()
With Application.CommandBars("Text").Controls.Add(msoControlButton)
.Caption = "&Один символ"
.OnAction = "Символ"
End With
End Sub
Sub МенюВыделение()
With Application.CommandBars("Text").Controls.Add(Type:=msoControlButton)
.Caption = "В&ыделение"
.OnAction = "Строка"
End With
End Sub
Sub Символ()
MsgBox "Нет выделения"
End Sub
Sub Строка()
MsgBox "Выделение есть"
End Sub
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.