J'ai du code VBA qui utilise le clic droit de la souris dans un fichier Word.
J'utilise le gestionnaire d'événements pour sortir le menu contextuel typique.
Dans le module de classe:
Public Sub tipo1()
Register_Event_Handler
colorseleccion = 0
tiposeleccion = 1
seleccionatextoslevel1
End Sub
Dans un module normal:
Dim X As New Class1
Public Sub Register_Event_Handler()
Set X.appWord = Word.Application
End Sub
3 Réponses :
Ce code devrait fonctionner sur Office 2016 (testé en 2013 et cela fonctionne):
- Créez un nouveau module de classe et nommez-le:
cRightClickEventHandler. Copiez ce code:
Option Explicit Private Sub Document_Close() Set cApp = Nothing End Sub Private Sub Document_Open() Set cApp = New cRightClickEventHandler End Sub
- Insérer un nouveau module , copier-coller le code:
Option Explicit
Public Const sCommName As String = "Custom"
Public cApp As cRightClickEventHandler
Sub CreateCommand()
Dim cb As CommandBar
Dim ctr As CommandBarControl
On Error GoTo Err_CreateCommand
KillCommand
Set cb = Application.CommandBars.Add(sCommName, msoBarPopup)
Set ctr = cb.Controls.Add(msoControlButton)
With ctr
.Caption = "Let's do it!"
.TooltipText = .Caption
.FaceId = 611
.OnAction = "SayHello"
End With
cb.ShowPopup
Exit_CreateCommand:
On Error Resume Next
Set ctr = Nothing
Set cb = Nothing
Exit Sub
Err_CreateCommand:
MsgBox Err.Description, vbExclamation, Err.Number
Resume Exit_CreateCommand
End Sub
Sub KillCommand()
On Error Resume Next
Application.CommandBars(sCommName).Delete
End Sub
Sub SayHello()
MsgBox Selection.Text, vbInformation, "Hello..."
End Sub
- Recherchez le module
ThisDocument, copiez et collez le code:
Public WithEvents oApp As Application
Private Sub Class_Initialize()
Set oApp = Application
End Sub
Private Sub Class_Terminate()
Set oApp = Nothing
End Sub
Private Sub oApp_WindowBeforeRightClick(ByVal Sel As Selection, Cancel As Boolean)
CreateCommand
Cancel = True
End Sub
Voici le résultat lorsque vous faites un clic droit:
Et voici ce qui se passe lorsque vous cliquez sur l'élément de menu personnalisé:
J'espère que cela vous aidera.
La solution d'origine a été trouvée ici .
Non, cela ne fonctionne pas dans mon mot 2016. Cela fonctionne dans mon ancien mot 2010. :( Pour cette raison, je pense qu'il y a un menu dans mon mot 2016 qui empêche le gestionnaire d'événements de fonctionner.
C'est malheureux. Il semble qu'ils ont changé quelque chose entre Office 2013 et Office 2016. Si je parviens à tester 2016, je vous le ferai savoir.
Ok, je pense avoir trouvé ce qui se passe. Le gestionnaire d'événements fonctionne parfaitement avec d'autres événements (activation de la fenêtre ou double-clic). Par conséquent, cela semble un problème avec ce modèle d'ordinateur spécifique et probablement les pilotes de souris.
Cela fonctionne pour moi.