我需要在一百个Excel工作簿上获取数据。我创建了一个宏来循环遍历这些文件,获取数据并关闭它们。但是在我的Workbooks.open(路径)打开文件之后,它会关闭它并抛出 1004错误,说方法“打开”'失败。
我试图打开那一百个文件中的另一个,并且每个文件都抛出相同的错误。我试图打开一个普通文件(不是那一个中的一个),通过宏,它会正常打开。
将一大堆复制到我的C:\中,所有这些都会引发错误。
录制宏以打开文件。该文件打开是因为我单击了File-> Open File,但如果我运行宏打开它会抛出错误。
显然问题出在那些文件中。
- >码: 只是一个普通的Workbook.open代码(没有完整的代码,它只是它!我收到错误的链接文件)
Workbook.Open("C:\file.xlsx")
- >它们通常手动打开,没有任何错误或问题。
- >他们有:
*查询表
*正常公式
*他们有点小
- >观察和我尝试的内容:
路径正确(它打开文件并在之后立即关闭,并出现错误)。
我尝试打开的文件有连接查询,但我删除了测试文件上的连接。同样的错误。
尝试了CurruptLoad param,同样的错误(我不知道我是否正确使用它)。
尝试UpdateLinks:= 0,同样的错误。
试图通过新的Excel.Application打开它,没有任何改变。
在另一台电脑上试过,同样的事情。
任何人都有这样的事情?
我该怎么办?
答案 0 :(得分:0)
开场后你在做什么?
如果您正在尝试执行其他操作,则可能文件未完全打开,并且错误是基于未发生的下一行。
答案 1 :(得分:0)
我发现这个案例的解决方案(在我的工作中)
Application.DisplayAlerts = False
set wb = Workbooks.Open(objFile.path, ReadOnly:=True, CorruptLoad:=xlExtractData)
wb.close
Application.DisplayAlerts = True
通过CorruptLoad:= xlExtractData,它清除每个表,每个连接以及其他任何可能出现问题的内容。我得到我的数据并关闭文件而不保存它。
感谢支持人员。
答案 2 :(得分:0)
如果我了解您的问题,您可以使用我需要从plus文件中检索数据时使用的一个代码(所有格式都相同)
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