【问题标题】:Create Excel file in vbscript generates a corrupted file在 vbscript 中创建 Excel 文件会生成损坏的文件
【发布时间】:2017-08-17 17:44:23
【问题描述】:

我在 vbscript 中有以下代码:

    Set ExcelObject=CreateObject("Excel.Application")
    ExcelObject.visible=False
    ExcelObject.WorkBooks.Add
    ExcelObject.Sheets(1).Cells(1,1).value="1"
    ExcelObject.Sheets(1).Cells(1,2).value="2"
    ExcelObject.Sheets(1).Cells(1,3).value="3"
    ExcelObject.Sheets(1).Cells(1,4).value="4"
    ExcelObject.Sheets(1).Cells(2,1).value="5"
    ExcelObject.Sheets(1).Cells(2,2).value="6"
    ExcelObject.Sheets(1).Cells(2,3).value="7" 
    ExcelObject.Sheets(1).Cells(2,4).value="Y"

    For x=0 to testData.Count-1
        ExcelObject.Sheets(1).Cells(x+3,1).value=testData(x)
        ExcelObject.Sheets(1).Cells(x+3,2).value="Constant"
        ExcelObject.Sheets(1).Cells(x+3,4).value="Y"
    Next

    ExcelObject.Activeworkbook.Sheets(1).Name = "Name"
    ExcelObject.Activeworkbook.SaveAs(path+"Data.xls")
    ExcelObject.Quit()
    Set ExcelObject=Nothing

不过,一旦我用 Excel 打开此电子表格,我就会收到以下错误: “Data.xls”的文件格式和扩展名不匹配。该文件可能已损坏或不安全...

另外,我无法从 UFT HP 导入此数据表。我相信这可能是因为 Excel 文件的生成方式存在这个问题。

我能做些什么来解决它?

【问题讨论】:

  • 另存为 xlsx。
  • 我特别需要它是 xls,因为 QTP(现在是 HP-UFT)要求它是 xls
  • 然后使用 saveas 命令的 filetype 参数。提示:不要包含 .xls 扩展名。如果代码正确,Excel 会将正确的代码放在那里。
  • 我不确定要保存的文件有多复杂。您可能需要在保存前添加ExcelObject.DisplayAlerts = False 以避免确认。

标签: excel vbscript qtp hp-uft datasheet


【解决方案1】:

您需要使用 xlExcel8FileFormat 保存为。 xlExcel8 相当于 56(因为 VB-Script 没有 xlExcel8 引用)。

ExcelObject.Activeworkbook.SaveAs(path+"Data", 56)

不要添加扩展名。 Excel会根据文件类型参数添加正确的。

【讨论】:

  • 我不确定要保存的文件有多复杂。您可能需要在保存前添加ExcelObject.DisplayAlerts = False 以避免确认。