如何将范围复制到剪贴板以便在另一个Excel实例中使用?

时间:2014-07-08 18:02:07

标签: vba excel-vba excel

我在两个不同的实例中打开了两个不同的Excel工作簿bk1bk2,这样我就可以在每个显示器上打开一个。

我想要一个bk1的事件处理程序,这样当我双击工作表s1中的一列时,我会将该列中的所有值复制到剪贴板,这样我就可以点击在bk2上,将这些值粘贴到一列中。

我在bk1的代码模块s1中有以下事件处理程序:

Private Sub worksheet_beforedoubleclick(ByVal target As Range, cancel As Boolean)

Dim column As Long
Dim rng As Range

column = target.column
Set rng = Range(Cells(2, column), Cells(3233, column))
rng.Copy


End Sub

双击时会触发此事件,并为rng指定正确的范围,但是当我尝试粘贴值时,即使我尝试粘贴值,粘贴选项也不可用bk1中的其他地方。为什么不将范围复制到剪贴板?

请注意,如果我将最后一行更改为:

rng.Copy Sheets("sheet3").Range("a2")

粘贴成功发生。所以问题是将数据传送到剪贴板。

2 个答案:

答案 0 :(得分:1)

首先我认为可能在单元格内双击内容清除excel剪贴板

然后我在Excel中打开剪贴板,看看是否正在将所选数据复制到剪贴板,方法是单击如下所示的箭头

enter image description here

原来数据被复制到剪贴板但由于某种原因它不会粘贴数据

所以,我终于得到了clip board object with some help

Private Sub worksheet_beforedoubleclick(ByVal target As Range, cancel As Boolean)
Dim column As Long
column = target.column
Set rng = Range(Cells(2, column), Cells(3233, column))
rng.Copy

    Dim Clip As Object
    Set Clip = CreateObject( _
     "new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    Clip.GetFromClipboard
    Range("B2").PasteSpecial xlValues       

End Sub

随意修改Clip对象以供您使用

答案 1 :(得分:1)

双击查看将cutcopymode切换为false