2
votes

Comment déclencher le gestionnaire d'événements de clic droit dans Word 2016?

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


0 commentaires

3 Réponses :


0
votes

Ce code devrait fonctionner sur Office 2016 (testé en 2013 et cela fonctionne):

  1. 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
  1. 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
  1. 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:

 entrez la description de l'image ici

Et voici ce qui se passe lorsque vous cliquez sur l'élément de menu personnalisé:

entrez la description de l'image ici

J'espère que cela vous aidera.

La solution d'origine a été trouvée ici .


2 commentaires

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.



0
votes

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.


0 commentaires

0
votes

Cela fonctionne pour moi.

  • Est-il possible qu'il fonctionne sur un document Word, cela semble changer pour tous les documents Word actifs à la fois.
  • Plutôt que de supprimer le mot menu standard, le code peut-il être modifié pour l'ajouter en tant que nouvel élément dans le menu contextuel standard

0 commentaires