Я пытаюсь создать пользовательскую ленту с помощью кнопки, которая запускает макрос VBA в Outlook 2010. Само создание ленты работает нормально, но кнопка не запускает VBA.
Я попробовал следующие решения: 1) Как: запустить существующие макросы Word VBA из надстройки ленты C # , но выдает ошибку, так как AFAIK Outlook.Application не имеет метода Run () В отличие от Excel или Word.
public void RunMacro(object otApp, object[] oRunArgs){
otApp.GetType().InvokeMember("Run",
System.Reflection.BindingFlags.Default |
System.Reflection.BindingFlags.InvokeMethod,
null, oApp, oRunArgs);
}
public void RunChronosMacro(Office.IRibbonControl control)
{
RunMacro(oApp, new object[] { "TestMacro" })
}
2) Третий ответ на этот вопрос Вызовите код Outlook VBA из c # , но он также вызывает исключение {"Unknow name. ( RESULT : 0x80020006 (DISP_E_UNKNOWNNAME))"}
. Возможно, это работало в Outlook 2007, но не в моей среде. Поскольку этот ответ основан на коде Python, я также попробовал его на Python, но безуспешно.
public void RunChronosMacro(Office.IRibbonControl control)
{
try
{
otApp.GetType().InvokeMember("TestMacro",
System.Reflection.BindingFlags.Default |
System.Reflection.BindingFlags.InvokeMethod,
null, otApp, arFunctionParameters);
System.Runtime.InteropServices.Marshal.ReleaseComObject(otApp);
otApp = null;
GC.Collect();
}
catch (Exception e)
{
MessageBox.Show(e.GetType().ToString());
}
}
Я довольно сильно застрял в этом, и, поскольку я не очень хорошо знаком с надстройками C # и Office, я не знаю, что делать дальше. Заранее спасибо за любую помощь.