复制两个excel实例之间的范围

时间:2014-12-31 14:51:01

标签: excel vba excel-vba

我正在运行两个单独的Excel实例,并且我试图将数据从一个工作簿中的范围复制到另一个工作簿。

我有这段代码:

Sub CopyValues()
Dim xlApp As Excel.Application
Set xlApp = GetObject(, "Excel.Application")
Dim Src As Range
Dim Dst As Range
    Set Src = xlApp.ActiveSheet.Range("A1:A9")
    Set Dst = Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1:A9")
    Src.Copy Dst
End Sub

它不会返回任何错误,但它不会复制值, 也尝试了最后一行

Src.Value = Dst.Value

仍然无所事事

我的VBA技能不太好,2周前才开始学习。

2 个答案:

答案 0 :(得分:2)

如果您想避免使用剪贴板,并假设您对另一个Excel实例(xlApp)的句柄是正确的,那么您应该能够使用数组来获取和设置数据。

Sub CopyValues()
    Dim xlApp As Excel.Application
    Dim Src As Range
    Dim Dst As Range
    Dim Vals() as Variant

    Set xlApp = GetObject(, "Excel.Application")

    Set Src = xlApp.ActiveSheet.Range("A1:A9")
    Set Dst = Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1:A9")

    Vals = Src
    Dst.Value = Vals
End Sub

答案 1 :(得分:0)

所以我设法让我的代码工作,问题在于句柄,改变了这个:

Set xlApp = GetObject(, "Excel.Application")

Set xlApp = GetObject("c:\mypath\book1.xlsm").Application

并且还使用上一个答案中的建议改变了复制方法

因此,面对此问题的任何人的完整工作代码是:

Sub CopyValues()
Dim xlApp As Excel.Application
Dim Src As Range
Dim Dst As Range
Dim Vals() as Variant

Set xlApp = GetObject("c:\mypath\book1.xlsm").Application

Set Src = xlApp.ActiveSheet.Range("A1:A9")
Set Dst = Workbooks("Book2.xlsm").Worksheets("Sheet1").Range("A1:A9")

Vals = Src
Dst.Value = Vals
End Sub

谢谢大家的帮助。