使用Solver加载项时,Excel应用程序在后台运行
我正在开发一个.NET应用程序,它打开一个工作簿,运行一些VBAmacros,刷新连接等等。这很好,但是当我运行一些使用Solver加载项函数的VBAmacros时,即使在我重新发布所有COM对象正确(调用'Marshal.ReleaseComObject')。
我该如何解决?
编辑:
这里是一个重现此问题的代码示例:
Excel.Application xlApp = null; Excel.Workbooks xlWorkbooks = null; try { xlApp = new Excel.Application(); xlApp.Visible = true; xlApp.DisplayAlerts = false; xlWorkbooks = xlApp.Workbooks; Excel.Workbook xlWorkbook = xlWorkbooks.Open(Filename: path, ReadOnly: false); xlApp.Run(macro); xlWorkbook.RefreshAll(); xlWorkbook.Close(SaveChanges: true); xlApp.Quit(); releaseObject(xlWorkbook); releaseObject(xlWorkbooks); releaseObject(xlApp); } catch (Exception e) { Console.WriteLine("Erro ao executar métodos Excel"); Console.WriteLine(e.Message); }
在这里我实现的function来释放COM对象:
static void releaseObject(object o) { try { if (o != null) Marshal.ReleaseComObject(o); } catch { o = null; } }