使用解算器加载项

时间:2015-09-23 17:53:32

标签: c# excel excel-vba excel-interop excel-addins vba

我正在开发一个.NET应用程序,它可以打开一个工作簿,运行一些VBA宏,刷新连接等等。这很好,但是当我运行一些使用Solver Add-in功能的VBA宏时即使在我正确地重新发布所有COM对象之后,Excel实例也会继续运行(调用' 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);
        }

这里我实现了释放COM对象的函数:

static void releaseObject(object o)
    {
        try
        {
            if (o != null) Marshal.ReleaseComObject(o);
        }
        catch
        {
            o = null;
        }
    }

0 个答案:

没有答案