什么"对象需要的错误"意思?

时间:2013-03-10 02:53:46

标签: excel-vba vba excel

我的下面的代码遇到了“对象必需的错误”。你能帮我理解什么是错的吗?

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

它应该是复数 - Rows,而不是Row。 :

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

Rows.Count返回工作表中的行数:Excel 2003及更早版本为65536,Excel 2007及更高版本为1,048,576。因此,您还应将下一行更改为:

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

如上所述,您还应该使用Ranges限定ws