0

以下の私のコードは、「オブジェクトが必要なエラー」に遭遇しています。何が悪いのか理解するのを手伝ってもらえますか?

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
4

2 に答える 2

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
于 2013-03-10T06:09:48.187 に答える
0

RowsRow ではなく、複数形 - にする必要があります。:

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ます。

于 2013-03-10T06:38:25.623 に答える