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