2013-03-05 3 views
2

Je voudrais afficher par programme dans le menu contextuel clic droit avec mise au point par une macro VBA dans Word 2007.Affichage clic droit menu contextuel avec un accent dans par macro VBA dans Microsoft Word 2007

Cela me permettrait de cartographier les macro à un raccourci et exposer le menu avec focus sans quitter le clavier. Je supposais cela serait fait par la collection de l'objet ApplicationCommandBars, accessible le long des lignes de:

Application.CommandBars.'access appropriate mehod or member here'

Mais je ne vois pas de méthode ou d'un membre qui semble comme il montrerait le menu contextuel. Est-il possible d'atteindre cet objectif grâce à une macro VBA?

EDIT:

Comme suggéré que je mis en boucle à travers chaque CommandBar et obtenu le nom et l'index pour essayer de savoir quel indice CommandBar à utiliser:

Sub C_RightClick() 
'Activates right-click context menu 
' 

Dim cbar As Office.CommandBar 
Dim cbarIndex As Integer 
Dim testString As String 
Dim cBarsArray(0 To 500) 
Dim arrayCounter As Integer 

testString = "" 
arrayCounter = 1 

For Each cbar In CommandBars 
    'TRUE if right-click 
    'If LCase(cbar.Name) = 'right-click' Then 
    ' cbarIndex = cbar.Index 
    'End If 

    testString = testString + CStr(cbar.Index) + " " + cbar.Name + " " + CStr(cbar.Type = msoBarTypePopup) + vbCrLf 
    Debug.Print cbar.Name; " "; cbar.Type = msoBarTypePopup 

    'Add name to array and increment counter 
    cBarsArray(arrayCounter) = cbar.Name 
    arrayCounter = arrayCounter + 1 

Next cbar 

MsgBox testString 

'Application.CommandBars(cbarIndex).ShowPopup 


End Sub 

Cependant, je ne vois pas de intitulé «clic droit». Je pensais que ce pourrait être "Standard", dont l'index est 1, mais a reçu une erreur quand j'ai essayé d'y accéder.

Si quelqu'un connaît le nom correct du menu contextuel par défaut qui apparaît dans Word 2007 lorsque l'onglet Home est sélectionné, il serait apprécié. Sinon, je vais poser cette question à SuperUser et à mes recherches. Merci pour l'aide.

+0

Voir ma modifier pour les pensées dans le menu de l'onglet HOME. –

Répondre

1

Essayez quelque chose comme:

Application.CommandBars(100).ShowPopup 

L'argument peut être l'indice CommandBar ou une légende.

Pour exécuter une commande particulière sur un CommandBar, essayer quelque chose comme:

Application.CommandBars(100).Controls("Paste").Execute 

Pour imprimer une liste de tous les CommandBars à la fenêtre immédiate:

Sub test() 
Dim cbar As Office.CommandBar 
For Each cbar In CommandBars 
    'TRUE if right-click 
    Debug.Print cbar.Name; " "; cbar.Type = msoBarTypePopup 
Next cbar 
End Sub 

EDIT: En réponse à votre question sur le menu contextuel que vous obtenez sur l'onglet HOME, je pense que c'est un contrôle différent de CommandBar.

Pour avoir une meilleure idée des noms et des index des menus contextuels, j'ai légèrement modifié le code ci-dessus. Cela essaie maintenant d'ajouter un contrôle à chaque menu contextuel. La légende du contrôle ajouté est le nom et l'index du menu. Les contrôles sont temporaires: ils seront supprimés la prochaine fois que vous ouvrirez Word.

Sub test() 
Dim cbar As Office.CommandBar 
Dim ctl As Office.CommandBarControl 
For Each cbar In Application.CommandBars 
    With cbar 
     On Error Resume Next 
     'this will delete any customizations 
     .Reset 
     Set ctl = .Controls.Add(Type:=msoControlButton, Temporary:=True) 
     ctl.Caption = .Index & " - " & cbar.Name 
     Debug.Print "Name: "; cbar.Name; " Right-click: "; cbar.Type = msoBarTypePopup; " Error descr: "; Err.Description 
     On Error GoTo 0 
    End With 
Next cbar 
End Sub 

Il imprime également le message d'erreur, s'il y en avait un, dans la fenêtre immédiate.

La raison pour laquelle je ne pense pas que vous aurez de la chance avec le menu contextuel "Home" est qu'aucun contrôle n'y est ajouté. Voici une photo d'un menu avec la commande ajouté:

enter image description here

Questions connexes