【问题标题】:Open corrupt Excel file in VBScript在 VBScript 中打开损坏的 Excel 文件
【发布时间】:2018-07-03 14:39:28
【问题描述】:

我正在尝试将目录中的大约 600 个 excel 文件转换为 CSV,以便它们采用 SAS Enterprise 指南的标准化格式。

为此,我有一个批处理文件,它对目录中的每个 .xlsx 文件执行 VBScript。这适用于几乎所有的 excel 文件,但“损坏”的文件除外。

我不确定它们为何损坏,但它们都已从 Google 表格转换为 Excel,因此不足为奇。

我的问题是应该强制 workbooks.open() 方法打开损坏的文件的语法不起作用。

请看下面我的vbs代码:

csv_format = 6

Set objFSO = CreateObject("Scripting.FileSystemObject")

Dim oExcel
Set oExcel = CreateObject("Excel.Application")

Dim oBook
Set oBook = oExcel.Workbooks.Open ("Z:\ATR_Track\0108~ASHFORD TP~AT-ATv2~18-06-2018.xlsx", CorruptLoad:= xlRepairFile)

oBook.Sheets(WScript.Arguments.Item(0)).Select

set deleterange = oExcel.Range("A1", "A3").EntireRow

deleterange.AutoFilter()

deleterange.Delete

oBook.SaveAs "Z:\ATR_Track\test.csv" &"_ATR", 
csv_format

oBook.Close False
oExcel.Quit

返回的错误在第 9 行,字符 129 处显示为“Expected ')'”。

谁能告诉我我的语法有什么问题?

【问题讨论】:

标签: excel vbscript


【解决方案1】:

这里有几个问题。

首先 - 您需要定义常量 xlRepairFile,您可以通过在代码顶部添加以下行来完成此操作(链接到值 [https://msdn.microsoft.com/en-us/vba/excel-vba/articles/xlcorruptload-enumeration-excel]):

CONST xlRepairFile = 1

其次 - VBScript 不支持命名参数。您将需要提供用逗号限制的空参数来完成函数(直到您要更改的参数,在这种情况下恰好是最后一个参数),如下所示(链接到 WorkBooks.Open 方法详细说明所有参数 [https://msdn.microsoft.com/en-us/vba/excel-vba/articles/workbooks-open-method-excel]:

Set oBook = oExcel.Workbooks.Open ("Z:\ATR_Track\0108~ASHFORD TP~AT-ATv2~18-06-2018.xlsx", , , , , , , , , , , , , , xlRepairFile)


我目前不知道有任何解决方法,但 Angus W 可能知道 + 提供更好的答案。

完整的新代码:

csv_format = 6
CONST xlRepairFile = 1

Set objFSO = CreateObject("Scripting.FileSystemObject")

Dim oExcel
Set oExcel = CreateObject("Excel.Application")

Dim oBook
Set oBook = oExcel.Workbooks.Open ("Z:\ATR_Track\0108~ASHFORD TP~AT-ATv2~18-06-2018.xlsx", , , , , , , , , , , , , , xlRepairFile)

oBook.Sheets(WScript.Arguments.Item(0)).Select

set deleterange = oExcel.Range("A1", "A3").EntireRow

deleterange.AutoFilter()

deleterange.Delete

oBook.SaveAs "Z:\ATR_Track\test.csv" &"_ATR", 
csv_format

oBook.Close False
oExcel.Quit

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多