在VBScript中打开损坏的Excel文件

时间:2018-07-03 14:39:29

标签: excel vbscript

我正在尝试将目录中的约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')'”。

有人可以告诉我我的语法有什么问题吗?

1 个答案:

答案 0 :(得分: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