Office 2007升级2013,导出Excel类,提示保存错误()

错误提示:

类“Excel.Application”的 COM 对象中的方法“save”返回了错误代码 0x800A03EC

试了很多种方式,打补丁,等等。              

不用系统的保存方法,重写一个保存Excel的方法,完美解决。

                //2016/12/8 Hailiang.Ma --- <MOD START>
                //p_ExcelApp.save();
                for(i = 1; i <= p_ExcelBooks.count(); ++i)
                {
                    p_ExcelBook = p_ExcelBooks.item(i);
                    p_ExcelBook.comObject().save();
                }

                 p_ExcelBook.saveAs(filename);
                //2016/12/8 Hailiang.Ma --- <MOD END>

完善版:

Excel宏:

// 2018/1/18 Mhl ---CEC <ADD START>
#define.1997('1997')    //version number -- 8.0
#define.2000('2000')    //version number -- 9.0
#define.2002('2002')    //version number -- 10.0
#define.2003('2003')    //version number -- 11.0
#define.2007('2007')    //version number -- 12.0
#define.2010('2010')    //version number -- 14.0
#define.2013('2013')    //version number -- 15.0
#define.2016('2016')    //version number -- 16.0
// 2018/1/17 Mhl ---CEC <ADD END>

代码:

// 2018/1/17 Mhl ---CEC <ADD>
/*
    AX2009支持Office 2010及以前版本
    office 2010之后的版本Ax saveAs()和save()需要重写
    // saveAs修改示例
    //先导入Excel宏
    #Excel
    excelVersion        = CEC_Global::excelVersion();
    //Office 2010及之前版本的写法
    if(excelVersion == #2010)
    {
        WorkBook.saveAs(fileName);
    }
    //office 2013及以后写法
    else if(excelVersion == #2013)
    {
        for(i = 1; i <= ExcelWorkBooks.count(); i++)
        {
            ExcelWorkBook   = ExcelWorkBooks.item(i);
            ExcelWorkBook.comObject().save();
        }
        ExcelWorkBook.saveAs(fileName);
    }
    // save()修改示例
    //p_ExcelApp.save();
    for(i = 1; i <= p_ExcelBooks.count(); ++i)
    {
        p_ExcelBook = p_ExcelBooks.item(i);
        p_ExcelBook.comObject().save();
    }
    p_ExcelBook.saveAs(filename);
*/
public static str 4 excelVersion()
{
    #Excel
    Com                     comExcel;
    str 4                   excelVersion;
    real                    excelVersionNumber;

    comExcel                = new Com(#Excel);
    excelVersionNumber      = comExcel.version();
    switch(excelVersionNumber)
    {
        case 8.0:
            excelVersion    = #1997;
            break;
        case 9.0:
            excelVersion    = #2000;
            break;
        case 10.0:
            excelVersion    = #2002;
            break;
        case 11.0:
            excelVersion    = #2003;
            break;
        case 12.0:
            excelVersion    = #2007;
            break;
        case 14.0:
            excelVersion    = #2010;
            break;
        case 15.0:
            excelVersion    = #2013;
            break;
        case 16.0:
            excelVersion    = #2016;
            break;
    }
    return excelVersion;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值