2013-03-10 37 views
0

我的代碼如下所示是一個「object required error」。你能幫我理解什麼是錯的嗎?「對象需要的錯誤」是什麼意思?

Private Sub Command9_Click() 
    Dim sPath As String 
    Dim sFil As String 
    Dim strName As String 
    Dim twbk As Workbook 
    Dim owbk As Workbook 
    Dim ws As Worksheet 

    Set twbk = ActiveWorkbook 
    sPath = "C:\Adise\Export\" 'Change to suit 
    sFil = Dir(sPath & "*.xls") 

    Do While sFil <> "" 
     strName = sPath & sFil 
     Set owbk = Workbooks.Open(strName) 
     Set ws = owbk.Sheets(1) 
     ws.Range("A1", Range("A" & Row.Count).End(xlUp)).Copy 
     twbk.Sheets(1).Range("A65536").End(xlUp)(2).PasteSpecial xlPasteValues 
     owbk.Close False 'Close no save 
     sFil = Dir 
    Loop 

    twbk.Save 
End Sub 
+1

雖然這不是最清楚的問題,但它確實包含代碼,它確實列出了標題中的錯誤 - 它確實得到了兩個答案,這似乎與「不是真正的問題」分類相矛盾。而不是關閉,我會要求提供錯誤信息,儘管它很清楚它是哪一個。所以我投票重新開放。 – 2013-03-10 15:10:05

回答

0

試試下面的代碼:

問題這一行:ws.Range("A1", Range("A" & Row.Count).End(xlUp)).Copy

你可以用它來找到最後一排Range("A65000").End(xlUp).Row

或者您可以使用Range("A1").CurrentRegion包括整個當前區域。

Private Sub Command9_Click() 
    Dim sPath As String 
    Dim sFil As String 
    Dim strName As String 
    Dim twbk As Workbook 
    Dim owbk As Workbook 
    Dim ws As Worksheet 

    Set twbk = ActiveWorkbook 
    sPath = "C:\Adise\Export\" 'Change to suit 
    sFil = Dir(sPath & "*.xls") 

    Do While sFil <> "" 
     strName = sPath & sFil 
     Set owbk = Workbooks.Open(strName) 
     Set ws = owbk.Sheets(1) 
     ws.Range("A1", Range("A" & Range("A65000").End(xlUp).Row)).Copy twbk.Sheets(1).Range("A65536").End(xlUp) 
     owbk.Close False 'Close no save 
     sFil = Dir 
    Loop 

    twbk.Save 
End Sub 
0

它應該是複數 - Rows,而不是行。 :

ws.Range("A1", ws.Range("A" & ws.Rows.Count).End(xlUp)).Copy 

Rows.Count返回工作表中的行數:65536爲Excel 2003和更早版本和1,048,576用於Excel 2007年起。出於這個原因,你也應該改變下一行:

twbk.Sheets(1).Range("A" & twbk.Sheets(1).Rows.Count).End(xlUp)(2).PasteSpecial xlPasteValues 

您還應當與Ranges資格ws,如上所述。