Excel VBA在Workbooks.Open上获取错误400

时间:2014-07-19 18:03:11

标签: excel vba excel-vba google-docs

每当我的Excel宏点击下面的代码时:

Dim wb As Workbook
Set wb = Workbooks.Open(OpenThisFile, CorruptLoad:=XlCorruptLoad.xlRepairFile)

返回error 400。奇怪的是,之前没有发生这种情况,我每天都这样做。我从GoogleDrive下载了一个excel电子表格/工作簿(它最初上传到Google云端硬盘,而不是在GoogleDrive中创建),然后使用我的ExcelMacro打开下载的Excel文件并阅读其内容。然后,ExcelMacro对ExcelFile进行一些排序和编辑,然后将其重新上传回GoogleDrive,明天再次进行排序。我不确定发生了什么,或者问题出在我的电脑上,还是谷歌对其设置进行了更改。

我注意到的一件事是,如果我先打开下载的文件,它会在打开之前给我这个错误:

EventA

然后在尝试Repair文件后,它给了我这个结果:

EventB

如果我保存并忽略这些问题,我可以执行ExcelMacro并且它不会给我错误。所以现在我必须在我的日常例程中添加另一个步骤,即从GoogleDrive下载ExcelFile后,我需要打开下载的文件,忽略发现的所有问题并保存,这样当我使用ExcelMacro时它不会给任何错误。

更新:任何人对此有任何想法吗?看起来很难调查,但我在这里看到的唯一问题是那些XML部分错误。我想如果我能以某种方式停止那些错误消息或修复警报,那么宏就可以打开它就好了。添加corruptload:=XlCorruptLoad.xlRepairFile似乎不再起作用了。

触发错误的整个子/部分:

Sub LoadOldFiles(OpenTheFileAddress)
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Dim wb As Workbook
Set wb = Workbooks.Open(OpenTheFileAddress, corruptload:=xlRepairFile)   <---- ERROR
    If wb.Sheets(1).UsedRange.Rows.Count > 1 Then
        wb.Sheets(1).UsedRange.Copy Destination:=Sheet2.Range("A1")
    End If
    If wb.Sheets(2).UsedRange.Rows.Count > 1 Then
        wb.Sheets(2).UsedRange.Copy Destination:=Sheet3.Range("A1")
    End If
    wb.Close False
Set wb = Nothing

'Remove Wraptext which causes missing part of cell contents
Sheet2.Cells.WrapText = False
Sheet3.Cells.WrapText = False

'Cleanup
FormatOutputSheets
Sheet2.Cells.Interior.Color = RGB(255, 255, 255)
Sheet3.Cells.Interior.Color = RGB(255, 255, 255)
Application.Goto Sheet3.Range("A1"), True
Application.Goto Sheet2.Range("A1"), True
Application.Goto Sheet1.Range("A1"), True
Sheet1.Label1.Caption = Dir(OpenTheFileAddress, vbDirectory)

'Change old inactive data color to orange so we can detect the ones being transfered back to active
Sheet3.UsedRange.Interior.Color = RGB(255, 165, 0)

Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

0 个答案:

没有答案