“Workbook.open”错误 – 打开文件后立即closures文件
我需要获取一百个Excel工作簿上的数据。 我创build了一个macros来循环这些文件,获取数据并closures它们。 但在我的Workbooks.open(path)打开文件后,它closures它,并抛出一个1004错误 ,指出方法“打开”失败。
我试图打开另外一百个文件,其中每个文件都引发同样的错误。 我试图打开一个正常的文件(不是那一百),通过macros,它正常打开。
复制了一堆到我的C:\,他们都抛出一个错误。
录制一个macros来打开文件。 该文件打开是因为我点击了文件 – >打开文件,但是如果我运行macros打开它,则会引发错误。
显然问题在于这些文件。
- 链接到文件 。
– > CODE:只是一个正常的Workbook.open代码(没有完整的代码,只是它!我得到一个文件链接错误)
Workbook.Open("C:\file.xlsx")
– >他们通常手工打开,没有任何错误或问题。
– >他们有:
*查询表
*正常的公式
*他们有点小
– >观察和我试过的:
-
path是正确的(它打开文件并closures它后,错误)。
-
我试图打开的文件有连接查询,但我删除了我的testing文件的连接。 同样的错误。
-
尝试了CurruptLoad参数,同样的错误(我不知道我是否正确使用)。
-
试过UpdateLinks:= 0,同样的错误。
-
试图通过新的Excel.Application打开它,没有任何改变。
-
在另一台电脑上试了一样的东西。
任何人有这样的事情?
我应该尝试什么?
开放后你在做什么?
如果你正在尝试做其他的事情,那么可能文件没有完全打开,错误是基于下一行没有发生。
解决scheme我find了这种情况下(在我的工作)
Application.DisplayAlerts = False set wb = Workbooks.Open(objFile.path, ReadOnly:=True, CorruptLoad:=xlExtractData) wb.close Application.DisplayAlerts = True
通过CorruptLoad:= xlExtractData,它可以清除每个表格,每个连接以及其他可能有问题的内容。 我得到我的数据并closures文件,而不保存它。
感谢你们的支持。
如果我理解你的问题,你可以使用我使用的一个代码,当我需要从加号文件中检索数据(所有格式都相同)
Sub ImportData() Dim wb As Workbook Dim myPath As String Dim myFile As String Dim myExtension As String Dim FldrPicker As FileDialog Dim LastRow As Long 'Optimize Macro Speed Application.ScreenUpdating = False Application.EnableEvents = False Application.Calculation = xlCalculationManual WsTo = ActiveWorkbook.Name 'Retrieve Target Folder Path From User Set FldrPicker = Application.FileDialog(msoFileDialogFolderPicker) With FldrPicker .Title = "Select A Target Folder" .AllowMultiSelect = False If .Show <> -1 Then GoTo NextCode myPath = .SelectedItems(1) & "\" End With 'In Case of Cancel NextCode: myPath = myPath If myPath = "" Then Exit Sub 'Target File Extension (must include wildcard "*") myExtension = "*.xlsx" 'Target Path with Ending Extention myFile = Dir(myPath & myExtension) 'Loop through each Excel file in folder Do While myFile <> "" 'Set variable equal to opened workbook Set wb = Workbooks.Open(Filename:=myPath & myFile) 'Change First Worksheet's Background Fill Blue Sheets(1).Select Range("A1").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Selection.Copy WsFrom = ActiveWorkbook.Name Windows(WsTo).Activate Sheets(1).Select With ActiveSheet LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row End With Range("A" & LastRow + 1).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, transpose:=False Application.CutCopyMode = False 'Save and Close Workbook Workbooks(WsFrom).Close SaveChanges:=False 'Get next file name myFile = Dir Loop 'Message Box when tasks are completed MsgBox "Importazione completata!" 'Reset Macro Optimization Settings Application.ScreenUpdating = True Application.EnableEvents = True Application.Calculation = xlCalculationAutomatic End Sub