在vb中以.xlsx格式保存文件



我正在使用最新的Microsoft.Office.Interop.Excel dll

系统当前将文件保存为.xls格式
我使用了以下代码,但出现了一个错误。

App = CreateObject("Excel.Application")
xlsTemplate= App.Workbooks.Open(TemplateFile) ' template is in .xls format
TargetPath = Some target path.xlsx
Excel.Workbook.SaveCopyAs(TargetPath)
Excel.Workbook = App.Workbooks.Open(TargetPath) ' code breaks here
SomeFunction(Excel.Workbook)
ExcelBook.SaveAs(ExcelBook.FullName,   Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbook,  System.Reflection.Missing.Value, System.Reflection.Missing.Value, False, False, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlUserResolution, True, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value)
ExcelBook.Saved = True

错误:Excel无法打开文件".xlsx",因为文件格式或文件扩展名无效。请验证文件是否已损坏,以及文件扩展名是否与文件的格式匹配。

我对这个帖子做出了回应,因为我不清楚目前的答案,这迫使我做更多的研究。

更改名称中的扩展名不会更改文件格式。要将excel文档保存为所需格式,请在Microsoft.Office.Interop.excel中使用以下参数来保存工作簿(VB.NET):

wb.SaveAs("C:MyFolderMyWorkbook.xlsx",XlFileFormat.xlOpenXMLWorkbook)

您可以修改第二个参数("文件格式")以指定要保存文档的版本。

  • XlFileFormat.xlOpenXMLWorkbook=xlOpenXMLWorkbook(2007-2013年没有宏,xlsx)
  • XlFileFormat.xlOpenXMLWorkbookMacroEnabled=xlOpenXMLWorkbookMacroEnabled(2007-2013年有或没有宏,xlsm)
  • XlFileFormat.xlExcel12=xlExcel12(2007-2013年Excel二进制工作簿,带或不带宏,xlsb)
  • XlFileFormat.xlExcel8=xlExcel8(Excel 2007-2013中的97-2003格式,xls)

更改扩展名不会自动更改文件的格式。您只是将.xls文件误称为.xlsx。当您再次尝试打开该文件时,Excel期望得到一个.xlsx文件,但得到的却是.xls格式的文件。SaveCopyAs没有提供更改文件格式的选项。请尝试SaveAs,然后使用FileFormat参数指定您想要.xlsx文件。

最新更新