我正在运行两个单独的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周前才开始学习。
答案 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
谢谢大家的帮助。