// 运行excel的vba宏 public object RunExcelMacro(string strMacroName, object args) { LuaTable ltArgs = args as LuaTable; if (ltArgs == null) { MessageBox.Show("调用RunExcelMacro(string strMacroName, object args)时参数为空!"); return(null); } object[] oArgArr = new object[ltArgs.Values.Count]; for (int i = 0; i < oArgArr.Length; i++) { oArgArr[i] = ltArgs[i]; } object[] ArgArr30 = new object[30]; for (int i = 0; i < oArgArr.Length; i++) { ArgArr30[i] = oArgArr[i]; } for (int i = oArgArr.Length; i < ArgArr30.Length; i++) { ArgArr30[i] = Missing.Value; } if (excelApp == null) // 未初始化成功 { MessageBox.Show("运行Excel的vba宏失败!\n\n请检查是否已在机器上装有Excel."); return(null); // 脚本已经对null值的处理 } object result_macro = null; try { result_macro = excelApp.Run(strMacroName, ArgArr30[0], ArgArr30[1], ArgArr30[2], ArgArr30[3], ArgArr30[4], ArgArr30[5], ArgArr30[6], ArgArr30[7], ArgArr30[8], ArgArr30[9], ArgArr30[10], ArgArr30[11], ArgArr30[12], ArgArr30[13], ArgArr30[14], ArgArr30[15], ArgArr30[16], ArgArr30[17], ArgArr30[18], ArgArr30[19], ArgArr30[20], ArgArr30[21], ArgArr30[22], ArgArr30[23], ArgArr30[24], ArgArr30[25], ArgArr30[26], ArgArr30[27], ArgArr30[28], ArgArr30[29]); } catch (Exception ex) { MessageBox.Show("宏运行错误,请不要保存所作修改!"); } return(result_macro as string[]); #if false Excel.ApplicationClass oExcel = new Excel.ApplicationClass(); oExcel.Visible = true; Excel.Workbooks oBooks = oExcel.Workbooks; Excel._Workbook oBook = null; string strXL = "C:/Documents and Settings/kuangsihao/桌面/剑网3-NPC数值.xlsm"; oBook = oBooks.Open(strXL, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing); RunMacro(oExcel, new Object[] { "矩形1_Click" });