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

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

Sub PutDataInClipboard()Dim objShell As ObjectDim strInt  As StringstrInt = "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 ObjectSet objDO = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")With objDO.settext strInt.putinclipboardEnd With
End Sub
Public Function GetCB() As StringSet objDO = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")With objDO.GetFromClipboardGetCB = .GetTextEnd 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所示。
在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部