簡體   English   中英

在VBScript中打開損壞的Excel文件

[英]Open corrupt Excel file in 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')'”。

誰能告訴我我的語法有什么問題嗎?

這里有幾個問題。

首先-您需要定義為xlRepairFile的常量,可以通過在代碼頂部添加以下行來完成此操作(鏈接到值[ https://msdn.microsoft.com/zh-cn/vba/excel- vba / articles / xlcorruptload-enumeration-excel] ):

CONST xlRepairFile = 1

其次-VBScript不支持命名參數。 您將需要提供用逗號限制的空參數以完成功能(直到您要更改的參數為止,在這種情況下,該參數恰好是最后一個),例如下面的內容(鏈接到WorkBooks.Open方法,詳細列出所有參數[ https://msdn.microsoft.com/zh-cn/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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM