public void ExecuteMacroFromScript(string macroName, string macoScript, params object[] parameter) { try { var vbModule = _wordDoc.VBProject.VBComponents.Add(Microsoft.Vbe.Interop.vbext_ComponentType.vbext_ct_StdModule); vbModule.CodeModule.AddFromString(macoScript); int size = parameter.Length; object[] para = new object[30]; for (int j = 0; j < 30; j++) { if (j < size) { para[j] = parameter[j]; } else { para[j + size] = _missing; } } _engine.Run(macroName, para[0], para[1], para[2], para[3], para[4], para[5], para[6], para[7], para[8], para[9], para[10], para[11], para[12], para[13], para[14], para[15], para[16], para[17], para[18], para[19], para[20], para[21], para[22], para[23], para[24], para[25], para[26], para[27], para[28], para[29]); _wordDoc.VBProject.VBComponents.Remove(vbModule); } catch (Exception ex) { ErrorParser(ex); return; } }