' Workbook.open'错误 - 打开文件后立即关闭文件

时间:2015-10-23 13:18:16

标签: excel vba excel-vba

我需要在一百个Excel工作簿上获取数据。我创建了一个宏来循环遍历这些文件,获取数据并关闭它们。但是在我的Workbooks.open(路径)打开文件之后,它会关闭它并抛出 1004错误,说方法“打开”'失败。

我试图打开那一百个文件中的另一个,并且每个文件都抛出相同的错误。我试图打开一个普通文件(不是那一个中的一个),通过宏,它会正常打开。

将一大堆复制到我的C:\中,所有这些都会引发错误。

录制宏以打开文件。该文件打开是因为我单击了File-> Open File,但如果我运行宏打开它会抛出错误。

显然问题出在那些文件中。

- >码: 只是一个普通的Workbook.open代码(没有完整的代码,它只是它!我收到错误的链接文件)

Workbook.Open("C:\file.xlsx")

- >它们通常手动打开,没有任何错误或问题。

- >他们有:
 *查询表
 *正常公式
 *他们有点小

- >观察和我尝试的内容:

  • 路径正确(它打开文件并在之后立即关闭,并出现错误)。

  • 我尝试打开的文件有连接查询,但我删除了测试文件上的连接。同样的错误。

  • 尝试了CurruptLoad param,同样的错误(我不知道我是否正确使用它)。

  • 尝试UpdateLinks:= 0,同样的错误。

  • 试图通过新的Excel.Application打开它,没有任何改变。

  • 在另一台电脑上试过,同样的事情。

任何人都有这样的事情?

我该怎么办?

3 个答案:

答案 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