La forma más simple de ejecutar una macro desde c#
Supongamos que queremos ejecutar una macro en excel desde c#. La forma más sencilla que veo yo es a través de Reflection. Veamos un ejemplo:
ApplicationClass excelApp = new ApplicationClass();
Workbook w = excelApp.Workbooks.Open("miExcel.xls",Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing );
RunMacro(w.Application, new object [] {"Nombre_Macro"});
Con este código hemos abierto un archivo de excel y hemos llamado a una función que nos va a ejecutar la macro.
Veamos ahora esa función:
private static void RunMacro(object oApp, object[] oRunArgs)
{
oApp.GetType().InvokeMember("Run",
System.Reflection.BindingFlags.Default |
System.Reflection.BindingFlags.InvokeMethod,
null, oApp, oRunArgs);
}
Así de sencillo. Saludos.