保存对不同文件中的工作表的更改。expression.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local)expression   必需。该表达式返回上述对象中一个对象。Filename   Variant 类型,可选。该字符串表示要保存的文件名。可包含完整路径。如果不指定路径,Microsoft Excel 将文件保存到当前文件夹中。FileFormat   Variant 类型,可选。保存文件时使用的文件格式。要得到有效选项的列表,请参阅 FileFormat 属性。对于已有文件,其默认格式是上次指定的文件格式;对于新文件,默认格式为当前使用的 Excel 版本格式。Password   Variant 类型,可选。它是一个区分大小写的字符串(最长不超过 15 个字符),用于指定文件的保护密码。WriteResPassword   Variant 类型,可选。该字符串表示文件的写保护密码。如果文件保存时带有密码,但打开文件时不输入密码,则该文件以只读方式打开。 ReadOnlyRecommended   Variant 类型,可选。如果该值为 True,则在打开文件时显示一条信息,提示该文件以只读方式打开。CreateBackup   Variant 类型,可选。如果该值为 True,则创建备份文件。AccessMode   XlSaveAsAccessMode 类型,可选。XlSaveAsAccessMode 可为以下 XlSaveAsAccessMode 常量之一。 
xlExclusive  (不含方式) 
xlNoChange default  (不更改访问方式) 
xlShared  (共享列表)
如果省略此参数,则不会更改访问方式。如果在没有改变文件名的情况下保存共享列表,则可以忽略参数。若要改变访问方式,请使用 ExclusiveAccess 方法。
 ConflictResolution    XlSaveConflictResolution 类型,可选。XlSaveConflictResolution 可为以下 XlSaveConflictResolution 常量之一。 
xlUserResolution  (显示冲突解决方案对话框) 
xlLocalSessionChanges (自动接受本地用户的修改) 
xlOtherSessionChanges  (接受除本地用户之外的其他用户的更改)
如果忽略本参数,则显示冲突处理对话框。
 AddToMru   Variant 类型,可选。如果该值为 True ,则将该工作簿添加到最近使用的文件列表中。默认值为 False。TextCodePage   Variant 类型,可选。不在美国英语版的 Microsoft Excel 中使用。TextVisualLayout   Variant 类型,可选。不在美国英语版的 Microsoft Excel 中使用。Local   Variant 类型,可选。如果该值为 True,则以 Microsoft Excel(包括控制面板设置)的语言保存文件。如果该值为 False(默认值),则以 Visual Basic for Applications (VBA) 的语言保存文件,其中 Visual Basic for Applications (VBA) 为典型安装的美国英语版本,除非 VBA 项目中的 Workbooks.Open 来自旧的国际化的 XL5/95 VBA 项目。

解决方案 »

  1.   

    能给个例子吗?
    我用了以下两种方式,都提示出错:
    wbMyBook.SaveAs(
                _variant_t("E:\\test2.xls"),
                _variant_t(""),
        _variant_t(""),
        _variant_t(""),
                _variant_t(false),  
        _variant_t(false), 
        _variant_t(""),
                _variant_t(""),
        _variant_t(""), 
        _variant_t(""), 
        _variant_t(""),
        _variant_t("")
                );wbMyBook.SaveAs(
                _variant_t("E:\\test2.xls"),
                _variant_t(""),
        _variant_t(""),
        _variant_t(""),
                _variant_t(false),  
        _variant_t(false), 
        _variant_t(""),
                _variant_t(""),
        _variant_t(""), 
        _variant_t(""), 
        _variant_t(""),
        _variant_t(false)
                );
    编译通过,但运行时提示:
    runtime error!
    this application has requested the runtime to terminate it in an unusual way.
      

  2.   

    iceriver_1980谢了啊!!
    上面给出的SaveAs()的参数都是可选的,能给一个把所有的参数都设为缺省值的例子吗?
      

  3.   

    如果你希望指定某个参数为缺省值,根据参数数据类型的不同,可指定不同的缺省值。当参数数据类型为字符串时,可以用长度为0的字符串。如果参数是 Variant类型,可用常量vtMissing,该常量在comdef.h 中定义。也可用_variant_t(DISP_E_PARAMNOTFOUND, VT_ERROR)产生一个Variant对象。
      

  4.   

    你的情况就是:
    wbMyBook.SaveAs(_variant_t("E:\\test2.xls"),
    vtMissing,
    vtMissing,
    vtMissing,  
    vtMissing,
    vtMissing,  
    vtMissing,  
    vtMissing,
    vtMissing,
    vtMissing,
    vtMissing,
    vtMissing);
      

  5.   


    COleVariant
          covTrue((short)TRUE),
          covFalse((short)FALSE),
          covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);...
    wbMyBook.SaveAs(COleVariant("c:\\1.xls"),covOptional,covOptional,covOptional,\
    covOptional,covOptional,1,covOptional,covOptional,covOptional,covOptional,covOptional);
      

  6.   

    对于saveas()方法来说,除了第一个参数之外,其他的都可以缺省。
    这个是例子:
    COleVariant covTrue((short)TRUE), covFalse((short)FALSE),
                        covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);wbk.SaveAs(
    COleVariant("盘符:\\aaa\\bbb\\ccc.xls"),
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    covOptional,
    0,
    covOptional,
    covOptional,
    covOptional,
    covOptional);如果对saveas()方法缺省全部参数的话,就成了save()方法了,这个方法是不需要任何参数的,连covOptional这样的方式都用不着,呵呵。
    这是save的声明:
    void _Workbook::Save()
    {
    InvokeHelper(0x11b, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
    }
      

  7.   

    我也在写这个,我保存是用这个的
    if (NULL==fopen("C:\\a.xls","r+"))
    {
    AfxMessageBox("文件不存在");
    wbMyBook.SaveAs(COleVariant("C:\\a.xls"),covOptional,covOptional,
    covOptional,covOptional,covOptional,(long)0,covOptional,covOptional,
    covOptional,covOptional);
    }
    else
    {
    AfxMessageBox("wenjiancunzai");
    wbMyBook.Save() ;

    }
    这是定义:
             Workbooks wbsMyBooks; 
    _Workbook wbMyBook;