Excel 将范围对象从一个工作簿复制到另一个工作簿

Excel 将范围对象从一个工作簿复制到另一个工作簿,excel,vba,Excel,Vba,我尝试将一个范围从一个工作簿(使用vba excel打开)复制到另一个工作簿(此工作簿) 使用此代码: Sub Get() Dim LastRow As Long With wbKA.Worksheets("Sheet1") LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row .Range(.Cells(5, 1), .Cells(LastRow, 1)).Copy .Range(.Cells(

我尝试将一个范围从一个工作簿(使用vba excel打开)复制到另一个工作簿(此工作簿)

使用此代码:

Sub Get()
Dim LastRow As Long
    With wbKA.Worksheets("Sheet1")
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        .Range(.Cells(5, 1), .Cells(LastRow, 1)).Copy
        .Range(.Cells(5, 1), .Cells(LastRow, 1)).Copy Destination:=ThisWorkbook.Worksheets("SheetB").Range("A6")

调试器将突出显示
.Range(.Cells(5,1),.Cells(LastRow,1)).Copy Destination:=此工作簿。工作表(“SheetB”).Range(“A6”)
行,错误为
复制方法无法应用于Range对象。第一个copy方法(我刚刚插入以检查是否在没有目标部件的情况下发生错误)贯穿整个过程。我将代码复制到另一个工作簿中,在该工作簿中,我仅将复制目标复制模式应用到一个工作簿,并且它正在工作。谁能告诉我,为什么这不起作用?wbKA工作簿可以很好地打开,我实际上可以执行我需要的所有操作(搜索、将值粘贴到数组中等等),只是复制操作不起作用。

因为您使用的是Excel,所以不需要打开新实例。这就造成了复制问题。试试这个(未经测试)

评论的后续行动。

使用不同的Excel实例时,不能使用
rng.copy Dest.rng
。您必须先复制它,然后粘贴到下一行。看看这些例子

这不起作用

Sub Sample()
    Dim xl As New Excel.Application
    Dim wb As Workbook
    Dim ws As Worksheet

    xl.Visible = True
    Set wb = xl.Workbooks.Add
    Set ws = wb.Sheets(1)

    ws.Range("A1").Value = "Sid"

    ws.Range("A1").Copy ThisWorkbook.Sheets(1).Range("A1")
End Sub
Sub Sample()
    Dim xl As New Excel.Application
    Dim wb As Workbook
    Dim ws As Worksheet

    xl.Visible = True
    Set wb = xl.Workbooks.Add
    Set ws = wb.Sheets(1)

    ws.Range("A1").Value = "Sid"

    ws.Range("A1").Copy
    ThisWorkbook.Sheets(1).Range("A1").PasteSpecial xlValues
End Sub
这将起作用

Sub Sample()
    Dim xl As New Excel.Application
    Dim wb As Workbook
    Dim ws As Worksheet

    xl.Visible = True
    Set wb = xl.Workbooks.Add
    Set ws = wb.Sheets(1)

    ws.Range("A1").Value = "Sid"

    ws.Range("A1").Copy ThisWorkbook.Sheets(1).Range("A1")
End Sub
Sub Sample()
    Dim xl As New Excel.Application
    Dim wb As Workbook
    Dim ws As Worksheet

    xl.Visible = True
    Set wb = xl.Workbooks.Add
    Set ws = wb.Sheets(1)

    ws.Range("A1").Value = "Sid"

    ws.Range("A1").Copy
    ThisWorkbook.Sheets(1).Range("A1").PasteSpecial xlValues
End Sub

你好谢谢你的回答,这个很好用。有趣的是,复制我的方式(尽管我不知道为什么)在这个环境中不起作用。这是因为在不同的excel实例中不能使用该语句。更新我的答案。