excel文件值没有更新

分享于2023年04月22日 c# excel macros vba 问答
【问题标题】:excel file values are not updatingexcel文件值没有更新
【发布时间】:2023-04-21 22:27:02
【问题描述】:

在我的应用程序中,我有一个带有按钮的 Excel 表格。使用 C# 代码我正在调用 excel 文件的按钮,并且 excel 文件单击事件也工作得很好。我以这种方式将味精框放在宏中,我验证了 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

  • 您是否检查过选项>公式以确保您选择了自动工作簿计算?我有时会以编程方式将其关闭!
  • 这个: xlWorkBook.Close(false 不保存就退出,这是你的意图吗?
  • @AlexK。 :我也尝试了给定的 true ,但值没有更新
  • @MiguelH :我验证了 Options->Formulas ,“自动”选项已被选中。如果我单击 excel 表中的按钮,值正在更新,但不是通过源代码。但两者都只调用相同的宏函数

【解决方案1】:

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

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

见: https://support.microsoft.com/en-us/kb/213489

【讨论】: