需要使用VBA将xls工作簿保存为xlsb格式

13

我使用一个宏来创建每日报告。这个宏历史上将xls文件保存为xls文件。由于文件太大,我想将报告保存为xlsb格式。有两个问题。我正在使用的宏脚本可以运行,但是我以后无法打开xlsb文件。收到的消息是:

"Excel 无法打开文件“RDN Activity Report.xlsb”,因为文件格式或文件扩展名不正确。请验证该文件未被破坏,并检查文件扩展名是否与文件格式相匹配。

txtFileName = Format(Date - 1, "yyyymmdd")
ActiveWorkbook.SaveAs Filename:= _
    "\\Clt-stor01a\CA_Services\RDN Reports\ForUploadPrev\RDN Activity Report." & txtFileName & ".xlsb", _
    FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
    ReadOnlyRecommended:=False, CreateBackup:=False
    txtFileName = Format(Date - 1, "yyyymmdd")
注意:我还需要一个脚本,当文件名中包含日期且该文件的日期为昨天时,可以打开该文件,例如“RDN Activity Report.20150726”。

1
xlNormal 更改为 xlExcel12 - Rory
1个回答

31
使用SaveAs参数的FileFormat:
  • 50 = xlExcel12 (Excel Binary Workbook in 2007-2013 with or without macro's, xlsb)

  • 51 = xlOpenXMLWorkbook (without macro's in 2007-2013, xlsx)

  • 52 = xlOpenXMLWorkbookMacroEnabled (with or without macro's in 2007-2013, xlsm)

  • 56 = xlExcel8 (97-2003 format in Excel 2007-2013, xls)

    ActiveWorkbook.SaveAs "C:\temp\text.xlsb", fileformat:=50
    

只是为了明确MatthewD的答案 - 在文件名参数中放置文本字符串“.xlsb”就像手动更改文件扩展名一样。它不会更改文件的格式。要更改文件格式,您需要使用FileFormat参数。 - nwhaught
@nwhaught 是正确的。无论你给工作簿起什么名字,文件格式才是决定格式的因素。 - MatthewD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接