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.