excel文件值未更新

时间:2016-02-24 16:12:03

标签: c# excel vba excel-vba macros

在我的应用程序中,我有一个带按钮的Excel表格。使用C#代码我正在调用excel文件的按钮,excel文件点击事件也工作得很好。我将msg框放在宏中,这样我验证了excel工作表按钮的点击事件正常工作。但是在运行宏之后,Excel中的值没有更新。请参考下面的代码,

using Excel = Microsoft.Office.Interop.Excel;
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkBook;
xlWorkBook = xlApp.Workbooks.Open("D:test.xlsm", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
Excel.Worksheet xlWorkSheet;
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xlApp.Run("Module1.solver", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
xlWorkBook.Close(false, Type.Missing, Type.Missing);
 xlApp.Quit();
releaseObject(xlApp);
releaseObject(xlWorkBook);
private void releaseObject(object obj)
    {
        try
        {
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
            obj = null;
        }
        catch (Exception ex)
        {
            throw (ex);
            obj = null;
        }
        finally
        {
            GC.Collect();
        }
    }  

我是否遗漏了一些更新excel文件的功能?我正在使用的宏是

SolverOk SetCell:="$A$6", MaxMinVal:=2, ValueOf:=0, ByChange:="$A$4:$A$6", _
    apple:=1, applecurry:="GRG Nonlinear"
MsgBox "$3"
SolverOk SetCell:="$A$6", MaxMinVal:=2, ValueOf:=0, ByChange:="$A$4:$A$6", _
    apple:=1, applecurry:="GRG Nonlinear"
MsgBox "$4"
SolverSolve

1 个答案:

答案 0 :(得分:0)

通过自动启动Excel时,不会加载xlstart文件夹中的任何加载项或项目。

如果您的代码依赖于加载的加载项,那么您需要通过代码加载它们。

请参阅:https://support.microsoft.com/en-us/kb/213489