Well, you clearly didn't read the linked KB article in any depth.
You don't pass the name of the macro to the
InvokeMember
method as the method to invoke! You pass in "Run" as the method name, and the macro name as one of the arguments:
private void RunMacro(object oApp, object[] oRunArgs)
{
oApp.GetType().InvokeMember("Run",
System.Reflection.BindingFlags.Default |
System.Reflection.BindingFlags.InvokeMethod,
null, oApp, oRunArgs);
}
RunMacro(olApp, new Object[]{ "nameOfMacro" });