如何使用VBA将变量值拷贝到剪贴板?

25 篇文章 2 订阅

VBA中使用Excel拷贝和粘贴方法是很容易的,并且很多时候为了提升代码运行效率,应尽量避免在代码中使用拷贝和站,而应优先采用直接赋值的方法。
不可否认,有些应用场景中仍然需要将某些内容放置到剪贴版中,这样可以供其他应用程序使用,如果内容已经在单元格中,那么直接使用Range对象的Copy方法就可以,但是如果内容是保存在变量中,是否可以直接放置到剪贴板,而不使用单元格做中转呢?答案是肯定的。
【方法1】使用WshShell对象

Sub PutDataInClipboard()
    Dim objShell As Object
    Dim strInt  As String
    strInt = "12345"
    Set objShell = CreateObject("WScript.shell")
    objShell.Run "cmd /C echo|set/p=" & strInt & "| CLIP", 2
End Sub

【代码解析】
第4行代码为需要放置到剪贴板中的字符串。
第5行代码创建WshShell对象。
第6行代码执行命令,将变量值放置到剪贴中。
在此之后,在任何应用程序中都可以使用粘贴功能(Ctrl+V组合键),将"12345"粘贴到指定位置。
【方法2】使用DataObject对象

Sub SetClipboard(ByVal strInt As String)
    Dim objDO As Object
    Set objDO = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    With objDO
        .settext strInt
        .putinclipboard
    End With
End Sub
Public Function GetCB() As String
   Set objDO = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    With objDO
        .GetFromClipboard
        GetCB = .GetText
    End With
End Function
Sub DEMO()
    Call SetClipboard("ABC")
    [A1] = GetCB
    [A2].PasteSpecial Paste:=xlPasteAll
End Sub

【代码解析】
SetClipboard过程将字符串放置到剪贴板中。
第2行代码创建DataObject对象。
第5和6行代码将变量的值放置到剪贴板中。
GetCB函数用于读取剪贴板中的值。
第12行代码使用GetFromClipboard方法读取剪贴板。
第13行代码设置函数返回值。
DEMO过程为示例。
第17行代码调用SetClipboard过程将ABC放置到剪贴板中。
第18行代码调用GetCB函数,将剪贴板内容写入A1单元格。
第19行代码使用PasteSpecial方法,将剪贴板内容写入A2单元格。
注意:如果在Excel中直接使用Ctrl+V组合键,插入的内容为不可以识别字符,如下图A3所示。
在这里插入图片描述

  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值