不一致的错误1004

时间:2015-03-30 22:21:29

标签: excel vba excel-vba

我有以下代码。简而言之 - 我有两个文件,一个读者和一个数据。我需要多个用户才能访问这些文件,但它们存储在Box帐户中,因此每个用户的文件目录都不同。我已经创建了应该执行此操作的代码。当我使用 F8 手动遍历代码,或者甚至在工作簿打开后按 F5 时,它运行得很好。但是我需要这个在工作簿上运行。当我打开它时,我收到以下错误:

  

运行时错误' 1004':应用程序定义或对象定义的错误。

这发生在

Set directoryRange = ImSapMacroWorkbook.Worksheets("Users").Range(Cells(1, 2), Cells(lastUser, 2))

我不知道为什么会在这一点上发生,但它并不一致,所以我无法确定为什么会发生这种情况。如果重要,这是auto_open子中的第一个子运行。在此运行之前甚至没有声明变量。

Sub GrabData()
    Dim DataWorkbook As Workbook
    Dim ImSapMacroWorkbook As Workbook
    Dim copyRange As Range
    Dim pasteRange As Range
    Dim directoryRange As Range
    Dim LastRow As Integer
    Dim lastUser As Integer

    lastUser = ThisWorkbook.Worksheets("Users").Range("A1048576").End(xlUp).Row

    Set directoryRange = ThisWorkbook.Worksheets("Users").Range(Cells(1, 2), Cells(lastUser, 2))
    Set MacroWorkbook = ThisWorkbook

    On Error GoTo nextUser
    For Each c In directoryRange

        Set DataWorkbook = Workbooks.Open(c.Value)

        Exit For
nextUser:

    Next c

    LastRow = DataWorkbook.Worksheets("Sheet1").Range("A1048576").End(xlUp).Row

    Set copyRange = DataWorkbook.Worksheets("Sheet1").Range(Cells(2, 1), Cells(LastRow, 36))
    Set pasteRange = MacroWorkbook.Sheets("input").Cells(2, 1)

    Call clearData

    copyRange.Copy
    MacroWorkbook.Activate
    pasteRange.Select
    ActiveSheet.Paste

End Sub

1 个答案:

答案 0 :(得分:1)

我想我发现了问题 - 我跑了

 DataWorkbook.Worksheets("Sheet1").activate

在给我问题的部分前面。似乎已经修复了它 - 将等待确认几次运行,因为它无论如何都是不一致的。