复制Range对象从一个工作簿到另一个
问题描述:
我试着从一个工作簿(使用VBA-Excel中打开),使用此代码复制至另一(的ThisWorkbook)复制Range对象从一个工作簿到另一个
Public wbKA as workbook
Sub A()
Dim oExcel As Excel.Application
KAPath = ThisWorkbook.path & "\Data.xlsx"
Set oExcel = New Excel.Application
Set wbKA = oExcel.Workbooks.Open(KAPath)
...
End Sub
:
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:=ThisWorkbook.Worksheets("SheetB").Range("A6")
被调试器高亮显示(黄色),错误代码为copy method could not be applyed to the range object
。第一种复制方法(我只是为了检查错误是否发生在没有目标部分的情况下才被执行)。我将代码复制到另一个工作簿,我将复制目标复制模式应用于仅一个工作簿,并且它正在工作。谁能告诉我,为什么这不起作用? wbKA工作簿打开正常,我可以实际执行所有我需要的(搜索,粘贴到数组等等),只是复制的东西不起作用。
答
由于您使用的是Excel,因此您无需打开新的实例。这是创建复制问题。尝试从本评论(未经测试)
Sub Sample()
Dim thisWb As Workbook, thatWb As Workbook
Dim thisWs As Worksheet, thatWs As Worksheet
Dim KAPath As String
Dim LastRow As Long
Set thisWb = ThisWorkbook
Set thisWs = thisWb.Sheets("SheetB")
KAPath = ThisWorkbook.Path & "\Data.xlsx"
Set thatWb = Workbooks.Open(KAPath)
Set thatWs = thatWb.Sheets("Sheet1")
With thatWs
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
.Range(.Cells(5, 1), .Cells(LastRow, 1)).Copy thisWs.Range("A6")
End With
End Sub
跟进。
使用不同的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
喜!感谢您的回答,这工作正常。有趣的是,知道复制我的方式(即使我不知道为什么)在这种环境中不起作用。 – ruedi 2014-10-20 08:31:49
这是因为在不同的excel实例中工作时不能使用该语句。更新我的答案。 – 2014-10-20 08:49:58