如何使用Excel互操作保存启用了宏的工作簿xlsm?

问题描述

尝试保存扩展名为xlsm的Excel工作簿时出现以下错误

此扩展名不能与所选文件类型一起使用。改变 文件名文本框中的文件扩展名或选择其他文件 通过更改另存为类型进行输入。

我的代码

public static void CreateExcelfile()
{
    Excel.Application oXL = new Excel.Application();
    Excel.Workbook oWB = oXL.Workbooks.Add(Missing.Value);
    oWB.SaveAs("C:\\Users\\konanki\\Documents\\Sample.xlsm",Missing.Value,Excel.XlSaveAsAccessMode.xlNoChange,Missing.Value);
    oWB.Close(true,Missing.Value);
}

解决方法

问题是您没有在public Passenger Oldest() { int oldest = 0; for (int i = 0; i < passengers.Length; i++) { if (passengers[i] > oldest) { oldest = passengers[i]; } } return oldest; } class Passenger { int age; string name; string major; public Passenger(int _age,string _name,string _major) { age = _age; name = _name; major = _major; } } 调用中提供文件格式。您需要为xlsm指定SaveAs。另外,请注意,XlFileFormat.xlOpenXMLWorkbookMacroEnabled对于所有可选参数都是不必要的,因为它们具有默认值。这应该起作用:

Missing.Value