0
我有以下代码。简而言之 - 我有两个文件一个阅读器和一个数据。我需要多个用户才能访问这些文件,但它们存储在Box帐户中,因此每个用户的文件目录都不相同。我已经创建了应该执行此操作的代码。当我在手册中使用F8或者甚至在工作簿打开后按F5手动执行代码时,它会很好地运行。不过,我需要这个打开工作簿。当我打开它,我得到以下错误:不一致的错误1004
Run-time error '1004': Application-defined or object-defined error.
这发生在
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
绝对似乎已经解决了这个问题 - 将在2天内确认为正确的答案,当stackoverflow会让我。 – JakeMWP 2015-03-30 22:36:16
请注意'ThisWorkbook.Worksheets(“Users”)。Range(Cells(1,2),Cells(lastUser,2))'相当于'ThisWorkbook.Worksheets(“Users”)。Range(ActiveSheet.Cells 1,2),ActiveSheet.Cells(lastUser,2))'所以如果活动工作表不是“用户”,那么会出现错误。使用'With ... End With'块可以防止这种错误 – barrowc 2015-03-31 00:16:14