跨多个工作簿/实例1004错误

时间:2014-01-28 16:37:10

标签: vba copy instances

我收到运行时错误'1004':对象'_Worksheet'的方法'Ranger'在以下代码中失败。

Public sh2 As Worksheet
Public sh1 As Worksheet
Public wb1 As Workbook
Public OtherWB As Object

Sub Test()

Set wb1 = ThisWorkbook
Set OtherWB = GetObject("C:\OtherWB.xlsm")
Set sh1 = wb1.Worksheets("Sheet1")
Set sh2 = OtherWB.Worksheets("Sheet1")

sh2.Range("A7").Select
sh2.Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 3)).Copy
sh1.Range("c8").PasteSpecial xlPasteAll

End Sub

基本上我想要从已经在另一个Excel实例中打开的OtherWB.xlsm进行复制并将其粘贴到当前工作簿中。这里需要第二个实例,因为系统使用多个监视器。我可以拉出单元数据与其他属性没有问题但是当涉及到使用“复制”时,事情变得有点乱。使用Excel woorkbooks作为对象时,复制不是允许的属性吗?

1 个答案:

答案 0 :(得分:0)

如果没有指定,则无法使用其他工作簿的ActiveCell

尝试:

With sh2
    .Range(.ActiveCell.Offset(0, 1), .ActiveCell.Offset(0, 3)).Copy
End With

编辑:

我没有尝试上面的代码,如果它不起作用,请尝试替换:

sh2.Range("A7").Select
sh2.Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 3)).Copy

with:

sh2.Range(sh2.Range("A7").Offset(0, 1), sh2.Range("A7").Offset(0, 3)).Copy

EDIT2:

另请注意,.Copy方法具有Destination参数,该参数可以位于不同的工作簿中。阅读MSDN Range.Copy Method Reference