在VBA中使用Excel的复制粘贴方法是非常容易的,而且很多时候,为了提高代码操作的效率,应该尽量避免在代码中使用复制粘贴,而应该优先考虑直接赋值的方法。
不可否认的是,在某些应用场景下,仍然需要将某些内容放入剪贴板中,以便于其他应用程序使用。 如果内容已经在单元格中,那么可以直接使用Range对象的Copy方法,但是如果内容保存在变量中,是否可以直接放在剪贴板上,而不是使用单元格进行传输呢? 答案是肯定的。
【方法一】使用对象
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
【代码分析】
第四行代码是需要放入剪贴板的字符串。
第 5 行创建对象。
第六行代码执行命令并将变量值放入剪辑中。
之后,您可以在任何应用程序中使用粘贴功能(Ctrl+V组合键)将“12345”粘贴到指定位置。
[方法2]使用对象
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
【代码分析】
该过程将一个字符串放在剪贴板上。
第二行代码创建对象。
第 5 行和第 6 行将变量的值放在剪贴板上。
GetCB函数用于读取剪贴板中的值。
第12行使用读取剪贴板的方法。
第13行代码设置函数的返回值。
DEMO过程就是一个例子。
第 17 行调用将 ABC 放入剪贴板的过程。
第 18 行调用 GetCB 函数将剪贴板的内容写入单元格 A1。
第19行代码使用该方法将剪贴板的内容写入A2单元格。
注意:如果在Excel中直接使用Ctrl+V组合键,插入的内容将会是无法识别的字符,如下图A3所示。