以vb格式保存.xlsx格式的文件

时间:2013-12-09 11:30:30

标签: vb.net com-interop

我使用的是最新的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',因为文件格式或文件扩展名无效。验证文件是否已损坏,以及文件扩展名是否与文件格式匹配。

2 个答案:

答案 0 :(得分:1)

我正在回应这个帖子,因为目前的答案对我来说还不清楚 - 这迫使我做更多的研究。

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

scope

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

  • 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)

答案 1 :(得分:0)

更改扩展名不会自动更改文件的格式。你只是将.xls文件误导为.xlsx。当您尝试再次打开该文件时,Excel期望一个.xlsx文件,但获取一个.xls格式的文件。 SaveCopyAs不提供更改文件格式的选项。尝试SaveAs并使用FileFormat参数指定您想要.xlsx文件。