剪贴板Clipboard的文本简单操作

剪贴板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库引用的,我们看看后期绑定的引用库:



好了,这讲就讲到这里,我们实现了利用剪贴板的前期和后期绑定的两种方案。



本节知识点回向:

  1. 实现剪贴板操作的前期绑定如何实现?

② 实现剪贴板操作的前期绑定引用的是什么库?

③ 实现剪贴板操作的后期绑定如何实现?



本讲代码参考文件: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的历历往事,不胜感慨,谨以这些文字以纪念,


分享成果,随喜正能量

发布于 2020-09-02 18:36

文章被以下专栏收录