2013-03-10 38 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,如上所述。