clipboard剪切板工具(剪贴板Clipboard是什么)
大家好,我们今日讲解"VBA信息获取与处理"教程中第十一个专题"VBA中剪贴板(Clipboard)的应用"的第一节"剪贴板Clipboard是什么",这个专题是非常有用的知识点,希望大家能掌握利用。
大家好,在之前的专题讲解中,对于来自网络数据的抓取,曾经讲过一个细节,就是将数据先放到剪贴板中,然后再粘贴到工作表内,大家可以再看一看资料006工作表.XLSM
中Sub CopyToClipbox过程的内容,那么什么是剪贴板,利用它有什么好处呢?对于VBA的操作,这个知识点有哪些方便独到之处呢?我们这个专题就来讲解。
第一节 剪贴板Clipboard是什么我们在平时操作文件的时候经常会用到Ctrl C/X、Ctrl V的操作,就是把我们需要的内容复制,然后粘贴到我们需要的地方,这种操作非常符合人们感观上的认识,其实这种动作就是把内容首先放到了剪贴板即专用的内存中,只不过这种操作是在后台进行,我们没有看到罢了。
1 剪贴板Clipboard的定义及VBA的引用
Windows的帮助文件中有这样的叙述:剪贴板是从一个地方复制或移动并打算在其他地方使用的信息的临时存储区域。可以选择文本或图形,然后使用"剪切"或"复制"命令将所选内容移动到剪贴板,在使用"粘贴"命令将该内容插入到其他地方之前,它会一直存储在剪贴板中。例如,您可能要复制网站上的一部分文本,然后将其粘贴到电子邮件中。
对于VBA而言,MSForms库包含一个名为DataObject的对象,该对象支持在Windows剪贴板上使用文本字符串。VBA不支持剪贴板上其他非文本值所需的数据类型。若要在代码中使用数据对象,必须设置对Forms 2.0 Object Library的引用。在VBA中添加引用如下:
转到VBA编辑器中的"工具"菜单,然后选择"引用"项。在出现的对话框中,向下滚动列表,直到找到适当的库(常用的引用列在列表的顶部,之后,引用按字母顺序列出)。找到代码所需的引用时,选中引用标题旁边的复选框,然后单击"确定"
2 剪贴板Clipboard对象的特点这个对象有什么特点,又是如何工作的呢?
1)公开性剪贴板中的数据存放在全局内存中,因此大部分的windows应用程序都可以访问其中的数据,在遵守相关API函数约定的前提下,应用程序可以自由地打开剪贴板(OpenClipboard),读取剪贴板内的数据(GetClipboardData),或者清空剪贴板(EmptyClipboard),然后设置剪贴板内的数据(SetClipboardData),最后关闭剪贴板(CloseClipboard);
2)独占性 Windows规定应用程序对剪贴板的访问是独占性的,当一个应用程序使用OpenClipboard打开剪贴板之后,其他程序就不可以再访问剪贴板,直至前一程序使用CloseClipboard关闭剪贴板。通常我们使用剪贴板的时候不会感觉受其他程序的影响,这是因为剪贴板内的数据操作都是在内存中进行的,速度非常快,对于特大块的数据,应用程序还可以选择延时处理(Delayed Rendering)机制以保证速度。但是,我们在对剪贴板编程的时候要注意:每次使用完剪贴板之后一定要记得使用CloseClipBoard关闭它;在OpenClipboard和CloseClipboard之间不要放置耗时很长的代码,以免影响其他程序正常工作。
3)规范性设置剪贴板内数据的应用程序窗口被称为剪贴板数据拥有者(ClipboardOwner),可以通过GetClipboardOwner函数获得它的句柄。反过来说,如果一个应用程序想向剪贴板中放入数据,需要先成为ClipboardOwner。程序要成为ClipboardOwner需要先将自己的句柄传给OpenClipboard函数,如果剪贴板中已经有数据存在,还需要先调用EmptyClipboard;
4)多元性剪贴板中可以同时存放多种格式的数据,各自放在全局内存的不同位置;剪贴板中的数据有标准格式/预定义格式的,如文本、位图、Wav声音……,也有非标准格式/用户自定义格式,比如word中的域和公式、Excel中的图表。
5)可检索性对于每种在剪贴板中存放过的格式,Windows都会给它分配一个独特的长整型编号,通过这个编号可以知道对应的数据格式的名称(GetClipboardFormatName),或者查询对应的数据在剪贴板中是否存在(IsClipBoardFormatAvailable),如果存在,还可以通过这个编号找到对应的数据在内存中存放的位置(GetClipboardData)。
对于标准格式,这个编号是固定的,可以通过VB6自带的APIViewer查询以CF_开头的常量得到,比如:
Public Const CF_TEXT = 1
Public Const CF_BITMAP = 2
Public Const CF_METAFILEPICT = 3
Public Const CF_SYLK = 4
……
对于非标准格式,这个编号由提供此格式数据的应用程序给此格式定义一个名称,然后将此名称传递给RegisterClipboardFormat函数,如果此名称已经存在,函数将返回此名称对应的编号,如果此名称不存在,函数将返回一个之前未使用的编号,在系统关机重启之前,这个名称和编号可以一直使用下去。
6)可监视性有一组特别的窗口可以持续监视剪贴板内的数据变化,这组窗口被称作剪贴板观察程序(ClipboardViewer),由它们构成的这个小圈子叫作剪贴板观察程序链ClipBoardViewerChain,每当剪贴板内数据发生变化时,windows将向消息链中的第一个窗口发送一个WM_DRAWCLIPBOARD消息,再由它转发给第二个……直至消息到达消息链中的最后一个窗口。同样,当消息链中的成员发生变化时,每个窗口都会收到一个WM_CHANGECBCHAIN消息;通过SetClipboardViewer函数,应用程序可以将自己的窗口句柄告诉windows,从而注册成为剪贴板观察程序链中的一员;通过ChangeClipboardChain函数,应用程序可以退出剪贴板观察程序链,而不影响它后面的窗口继续接收相关消息。
这讲我简单地介绍了一些剪切板相关的知识,对于大家掌握和利用这个知识点是十分有益的。其实不仅是对于VBA的理解,对于其他的语言也都大体一致。因为我参考的都是权威的论述。
3 剪贴板Clipboard一般操作从上面的分析我们可以得到下面的结论,剪贴板可用于存储文本和图像等数据。由于所有活动进程都共享剪贴板,因此它可用于在这些活动进程之间传输数据。使用 Clipboard 对象可轻松访问剪贴板并从中读取和向其写入数据。我们可以利用的操作有:从剪贴板读取数据;确定存储在剪贴板中的文件类型;清除剪贴板的数据;将数据写入剪贴板。
本节知识点回向:
1 什么是剪贴板?
② 剪贴板的特点是什么?
③ 剪贴板的操作有哪些?
积木编程的思路内涵:
在我的系列书籍中一直在强调"搭积木"的编程思路,这也是学习利用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的历历往事,不胜感慨,谨以这些文字以纪念,
分享成果,随喜正能量
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com