2009-11-14 67 views
4

背景:爲了文檔格式化目的,我在Word中使用了大量的專用VBA宏。在Word 2003中,這些宏是從自定義工具欄激活的。我最近過渡到Word 2007,希望能夠從使用VS 2010創建的新Word功能區中運行這些現有的VBA宏。我創建了一個功能區;但是,我無法弄清楚如何從新的功能區按鈕調用現有的宏。操作方法:從C#功能區插件運行現有的Word VBA宏

問題:如何從C#Word加載項調用存儲在.dotm模板中的現有VBA宏?

任何幫助將不勝感激。

回答

4

MS KB article 306683描述的技術 - 尤其是功能RunMacro定義存在 - 應該讓你從C#代碼中調用VBA宏:你定義一個函數RunMacro

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

,然後調用宏像這樣:

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

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

oAppWord.Application對象,我確信它可以在Word加載項中的某處使用。

+0

如果我在Excel模板中使用此代碼,它將生成宏安全警告......我怎麼能抑制這個? – Smack 2011-03-08 08:31:14

+0

@Smack:http://office.microsoft.com/en-us/excel-help/change-macro-security-settings-in-excel-HP010096919.aspx – Heinzi 2011-03-08 08:35:21