首先,我们看一个最简单的剪贴板操作例子:如何将文本放入剪贴板中。将文本数据放入剪贴板需要两个步骤:第一步是将文本放在DataObject变量中,然后将DataObject文本放在剪贴板中。例如,下面的代码将字符串“VBA代码解决方案”放入Windows剪贴板。 Dim DataObj As New MSForms.DataObject Dim S As String S = "VBA代码解决方案"DataObj.SetText SDataObj.PutInClipboard 这处代码和006工作表.XLSM的代码是一致的,是最简单的没有格式的文本操作。 使用SetText方法将文本写入剪贴板。① SetText方法可接受包含TextDataFormat类型的格式参数。下面的代码可将字符串“This is a test string”以 RTF 文本格式写入剪贴板。Clipboard.SetText("This is a test string.", System.Windows.Forms.TextDataFormat.Rtf)② 使用SetData方法将数据写入剪贴板。此示例以自定义格式specialFormat向剪贴板写入DataObjectdataChunk。Clipboard.SetData("specialFormat", dataChunk) ③ 使用SetAudio方法将音频数据写入剪贴板。此示例将创建字节数组musicReader,向其中读取文件 cool.wav,然后将其写入剪贴板。Dim musicReader = My.Computer.FileSystem.ReadAllBytes("cool.wav")Clipboard.SetAudio(musicReader) 注意:由于其他用户可访问剪贴板,不要将剪贴板用于存储密码或机密数据等敏感信息。
2 从剪贴板Clipboard中实现检索并提取文本
使用DataObject的PutInClipboard方法将文本放入剪贴板后,可以在应用程序中使用标准粘贴操作粘贴该文本,也可以将文本检索到字符串类型变量中。从DataObject中获取文本需要几个步骤:第一步是指示DataObject从剪贴板获取文本。第二步是将DataObject中的文本放入String变量中。例如: Dim DataObj As New MSForms.DataObject Dim S As StringDataObj.GetFromClipboard S = DataObj.GetTextDebug.Print S
3 实现从剪贴板Clipboard中检索文本的前期绑定代码实现
为了实现上述第一和第二部分的代码,我们给出最初的代码: Sub mynz() Dim DataObj As New MSForms.DataObject Dim S As String S = " VBA代码解决方案"DataObj.SetText SDataObj.PutInClipboardDataObj.GetFromClipboard UU = DataObj.GetTextDebug.Print UUEnd Sub 代码截图: 代码的讲解:1)Dim DataObj As New MSForms.DataObject建立一个DataObject的对象2)S = " VBA代码解决方案"给出要操作的字符串3) DataObj.SetText SDataObj.PutInClipboard将S的内容写入剪贴板。4)DataObj.GetFromClipboard读取剪贴板内容5)UU = DataObj.GetTextDebug.Print UU取得文本内容并在即时窗口打印上述过程从理论上讲没有任何问题,好了我们运行一下看看结果: 如下图,这是为什么呢?就是因为我们没有建立前期的引用。在上一讲中我们讲过要建立Forms 2.0 Object Library的引用,那么如何建立这个应用呢?很简单,我们只需插入一个窗体然后删除即可。如下: 这个时候我们打开引用的库:即使删除了窗体后这个引用也是存在的: 我们再次运行程序:这时程序正常运行。
4 实现从剪贴板Clipboard中检索文本的后期绑定代码实现
在上部分的讲解中,我们实现了前期绑定的代码,如果我们不想费事不想做前期的绑定,该如何写代码呢?我先给出下面的代码:Sub mynzA() Dim RR Set RR = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") S = " VBA代码解决方案"RR.SetText SRR.PutInClipboardRR.GetFromClipboard UU = RR.GetTextDebug.Print UUEnd Sub 代码截图:代码讲解:这种实现是一种后期绑定的方案,这种方案的讲解我在这套教程的上册中有讲解,这里不再多讲。我们先看一下运行的结果: 在后期绑定中,是没有上述form2库引用的,我们看看后期绑定的引用库:好了,这讲就讲到这里,我们实现了利用剪贴板的前期和后期绑定的两种方案。 本节知识点回向:①实现剪贴板操作的前期绑定如何实现?② 实现剪贴板操作的前期绑定引用的是什么库?③ 实现剪贴板操作的后期绑定如何实现? 本讲代码参考文件:012工作表.xlsm 我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序: 【分享成果,随喜正能量】生活就是用一两分钟的甜,冲淡那七八分钟的苦。