2009-11-14 3 views
4

Contexte: J'ai un grand nombre de macros VBA spécialisées utilisées dans Word à des fins de formatage de document. Dans Word 2003, ces macros ont été activées à partir d'une barre d'outils personnalisée. Je suis récemment passé à Word 2007 et j'aimerais pouvoir exécuter ces macros VBA existantes à partir d'un nouveau Ruban Word créé avec VS 2010. J'ai créé un ruban; Cependant, je n'arrive pas à comprendre comment appeler les macros existantes à partir des nouveaux boutons du ruban. Question: Comment appeler les macros VBA existantes, qui sont stockées dans un modèle .dotm, à partir du complément Word C#?Comment: Exécuter des macros VBA Word existantes à partir de C# Ruban Addin

Toute aide serait grandement appréciée.

Répondre

4

La technique décrite dans MS KB article 306683 - en particulier, la fonction RunMacro définie là - devrait vous permettre d'appeler une macro VBA à partir du code C#: Vous définissez une fonction RunMacro

private void RunMacro(object oApp, object[] oRunArgs) 
{ 
    oApp.GetType().InvokeMember("Run", 
     System.Reflection.BindingFlags.Default | 
     System.Reflection.BindingFlags.InvokeMethod, 
     null, oApp, oRunArgs); 
} 

puis appelez votre macro comme ceci:

RunMacro(oApp, new object[] {"NameOfMyMacro"}) 

ou

RunMacro(oApp, new object[] {"NameOfMyMacro", "some", 3, "parameters"}) 

oApp est l'objet Word.Application, dont je suis sûr qu'il est disponible quelque part dans un complément Word.

+0

Si j'utilise ce code dans un template Excel, il génèrera un avertissement de sécurité macro ... Comment puis-je le supprimer? – Smack

+0

@Smack: http://office.microsoft.com/fr-fr/excel-help/change-macro-security-settings-in-excel-HP010096919.aspx – Heinzi

Questions connexes