剪贴板Clipboard的文本简单操作
大家好,我们今日讲解“VBA信息获取与处理”教程中第十二个专题“VBA中剪贴板(Clipboard)的应用”的第一节“剪贴板Clipboard是什么”,这个专题是非常有用的知识点,希望大家能掌握利用。
第二节 剪贴板Clipboard的文本简单操作
在上一讲我们讲了一些关于剪贴板的基本知识点,从这讲开始,我们讲解剪贴板的一些操作,先从最简单的文本操作开始。
1 在剪贴板Clipboard中写入文本的操作
首先,我们看一个最简单的剪贴板操作例子:如何将文本放入剪贴板中。将文本数据放入剪贴板需要两个步骤:第一步是将文本放在DataObject变量中,然后将DataObject文本放在剪贴板中。例如,下面的代码将字符串“VBA代码解决方案”放入Windows剪贴板。
Dim DataObj As New MSForms.DataObject
Dim S As String
S = "VBA代码解决方案"
DataObj.SetText S
DataObj.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 String
DataObj.GetFromClipboard
S = DataObj.GetText
Debug.Print S
3 实现从剪贴板Clipboard中检索文本的前期绑定代码实现
为了实现上述第一和第二部分的代码,我们给出最初的代码:
Sub mynz()
Dim DataObj As New MSForms.DataObject
Dim S As String
S = " VBA代码解决方案"
DataObj.SetText S
DataObj.PutInClipboard
DataObj.GetFromClipboard
UU = DataObj.GetText
Debug.Print UU
End Sub
代码截图:

代码的讲解:
1)Dim DataObj As New MSForms.DataObject建立一个DataObject的对象
2)S = " VBA代码解决方案"给出要操作的字符串
3) DataObj.SetText S
DataObj.PutInClipboard
将S的内容写入剪贴板。
4)DataObj.GetFromClipboard读取剪贴板内容
5)UU = DataObj.GetText
Debug.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 S
RR.PutInClipboard
RR.GetFromClipboard
UU = RR.GetText
Debug.Print UU
End Sub
代码截图:

代码讲解:这种实现是一种后期绑定的方案,这种方案的讲解我在这套教程的上册中有讲解,这里不再多讲。
我们先看一下运行的结果:

在后期绑定中,是没有上述form2库引用的,我们看看后期绑定的引用库:

好了,这讲就讲到这里,我们实现了利用剪贴板的前期和后期绑定的两种方案。
本节知识点回向:
- 实现剪贴板操作的前期绑定如何实现?
② 实现剪贴板操作的前期绑定引用的是什么库?
③ 实现剪贴板操作的后期绑定如何实现?
本讲代码参考文件:012工作表.xlsm

积木编程的思路内涵:
在我的系列书籍中一直在强调“搭积木”的编程思路,这也是学习利用VBA的主要方法,特别是职场人员,更是要采用这种方案。其主要的内涵:
1 代码不要自己全部的录入 。你要做的是把积木放在合适的位置然后去 修正代码 ,一定要拷贝,从你的积木库中去拷贝,然后修正代码,把时间利用到高效的思考上。
2 建立自己的“积木库” 。平时在学习过程中,把自己认为有用的代码放在一起,多积累,在用到的时候,可以随时拿来。你的积木库资料越多,你做程序的思路就会越广。

VBA的应用界定
VBA是利用Office实现个人小型办公自动化的有效手段(工具)。 这是我对VBA的应用界定。在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁就是王者。其中登峰至极的技能非VBA莫属!
我记得20年前自己初学VBA时,那时的资料甚少,只能看源码自己琢磨,真的很难。20年过去了,为了不让学习VBA的朋友重复我之前的经历,我根据自己多年VBA实际利用经验,推出了六部VBA专门教程:
第一套:VBA代码解决方案 是VBA中各个知识点的讲解,教程共147讲,覆盖绝大多数的VBA知识点,提供的程序文件更是一座不可多得的代码宝库,是初学及中级人员必备教程;目前这套教程提供的版本是修订第二版, 程序文件通过32位和64位两种OFFICE系统测试。
第二套:VBA数据库解决方案 数据库是数据处理的专业利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,适合中级人员的学习。目前这套教程提供的是修订第一版教程, 程序文件通过32位和64位两种OFFICE系统测试。
第三套:VBA数组与字典解决方案 数组和字典是VBA的精华,字典是VBA代码水平提高的有效手段,值得深入的学习,是初级及中级人员代码精进的手段。目前这套教程提供的版本是修订第一版, 程序文件通过32位和64位两种OFFICE系统测试。
第四套:VBA代码解决方案之视频 是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。这套教程是第一套教程(修订一版)的视频讲解,听元音更易接受。这套教程还会额外提供通过32位和64位两种OFFICE系统测试的程序文件。
第五套:VBA中类的解读和利用 这 是一部高级教程,讲解类的虚无与肉身的度化,类的利用虽然较少,但仔细的学习可以促进自己VBA理论的提高。这套教程的领会主要是读者的领悟了,领悟一种佛学的哲理。
第六套教程:《VBA信息获取与处理》 , 这 是一部高级教程,涉及范围更广,实用性更强,面向中高级人员。教程共二十个专题,包括:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪切板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。
上述教程的学习顺序: 1→3→2→6→5 或者 4→3→2→6→5 。提供的教程是一座巨大的代码库,供读者使用,如需要可以WeChat: NZ9668

学习VBA是个过程,也需要经历一种枯燥的感觉
“众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山”。学习的过程也是修心的过程,修一个平静的心。在代码的世界中,心平静了,心情好了,身体自然而然就好。心静则正,内心里没有那么多邪知邪见,也就没有那么多妄想。利人就是利己。我的教程助力给正在努力的朋友。
“水善利万物而不争”,绵绵密密,微则无声,巨则汹涌。学习亦如此,知道什么是自己所需要的,不要蜷缩在一小块自认为天堂的世界里,待到暮年时再去做自欺欺人的言论。要努力提高自己,用一颗充满生机的心灵,把握现在,这才是进取。越是有意义的事情,困难会越多。愿力决定始终,智慧决定成败。不管遇到什么,都是风景。看淡纷争,看轻得失。学习时微而无声,利用时则巨则汹涌。“路漫漫其修远兮,吾将上下而求索”
每一分收获都是成长的记录,怎无凭,正是这种执着,成就了朝霞的灿烂。最后将一阙词送给致力于VBA学习的朋友,让大家感受一下学习过程的枯燥与执着:
浮云掠过,暗语无声,
唯有清风,惊了梦中啼莺。
望星,疏移北斗,
奈将往事雁同行。
阡陌人,昏灯明暗,
忍顾长亭。
多少VBA人,
暗夜中,悄声寻梦,盼却天明。
怎无凭!
分享我多年工作实际经验的成果,随喜这些有用的东西,给确实需要利用VBA的同路人。回向学习利用VBA的历历往事,不胜感慨,谨以这些文字以纪念,
分享成果,随喜正能量