
我正在嘗試將不同工作簿中的資料編譯並整理到一張 Excel 工作表中。我試圖將 A1:D1 中的資料從兩個工作簿 Secondtest1 和 Secondtest2 提取到 ThisWorkbook 中。到目前為止,這是我的程式碼。
Sub collateData()
Dim SourceArray
Dim SheetName As String, SourceRange As String
Dim TargetWorkbook As Workbook, sourceFile As Workbook
Dim TargetSheet As Worksheet
Dim i As Integer
Dim LastRow As Long
SourceArray = Array("H:\Secondtest1.xlsx", "H:\Secondtest2.xlsx")
SheetName = "Sheet1"
SourceRange = "A1:D1"
Set TargetWorkbook = ThisWorkbook
Set TargetSheet = TargetWorkbook.Sheets("Sheet1")
For i = 0 To UBound(SourceArray)
Set sourceFile = Workbooks.Open(SourceArray(i))
**LastRow = TargetSheet.Cells(TargetSheet.Rows.Count, 1).End(x1Up).Row**
With sourceFile
.Sheets(SheetName).Range(SourceRange).Copy Destination:=TargetSheet.Range("A" & i & ":D" & i)
.Close
End With
Next
End Sub
我在出現錯誤的行上標出了星號。我收到的錯誤是“應用程式定義或物件定義的錯誤”。我將不勝感激任何幫助,謝謝。
答案1
應該是xlUp
(它是小寫“L”,而不是數字“1”)。
編輯
幾點:
Option Explicit
始終在模組的頂部使用,即使它不是用於生產環境。這樣做會立即指出程式碼中的錯誤。- 選擇一種命名約定並始終遵循該約定(您主要使用大寫單詞,但您已將一個變數聲明為
sourceFile
)。 - 有些人可能更喜歡使用與變數不同的約定來命名過程(這取決於您)。
如果您開啟輸入工作簿而不打算進一步修改它,最好使用該
ReadOnly
參數,也可能使用該UpdateLinks
參數,如下所示:Workbooks.Open(SourceArray(i), ReadOnly:=False, UpdateLinks:=False)
傳遞
False
到UpdateLinks
將阻止彈出更新連結對話框。- 即使您確定您的值完全在變數的範圍內,也可以使用
Long
而不是。我在某處讀到,最新版本的 VBA 中的資料類型變得更有效率。Integer
Integer
Long