剪贴板Clipboard是什么 剪贴板是什么


剪贴板Clipboard是什么 剪贴板是什么

文章插图
什么是剪贴板(什么是剪贴板)大家好 。今天我们来讲解《VBA信息获取与处理》教程第十一讲“剪贴板在VBA的应用”的第一节“什么是剪贴板” 。这个题目是一个非常有用的知识点,希望大家能够掌握和利用 。
大家好,在之前的专题讲座中,我曾经讲过一个从网络上抓取数据的细节,就是先把数据放到剪贴板上,然后粘贴到工作表中 。你可以看看data 006工作表. xlsm 。
子CopyToClipbox程序中,那么什么是剪贴板以及使用它有什么好处呢?对于VBA操作来说,这个知识点有哪些优缺点?我们将解释这个话题 。
第一节剪贴板什么是剪贴板我们在操作文件的时候经常会用到Ctrl+C/X和Ctrl+V,也就是把我们需要的内容复制粘贴到我们需要的地方 。这种操作非常符合人们的认知 。其实这种动作是先把内容放入剪贴板,也就是专用内存,但是这个操作是在后台进行的,我们没有看到 。

1剪贴板剪贴板定义和VBA引用Windows的帮助文件中有一个描述:剪贴板是从一个地方复制或移动并打算在其他地方使用的信息的临时存储区域 。您可以选择文本或图形,然后使用“剪切”或“复制”命令将所选内容移动到剪贴板,它将存储在剪贴板上,直到使用“粘贴”命令将其插入其他地方 。例如,您可能想要复制网站上的部分文本,并将其粘贴到电子邮件中 。
对于VBA,MSForms库包含一个名为DataObject的对象,它支持在Windows剪贴板上使用文本字符串 。VBA不支持剪贴板上其他非文本值所需的数据类型 。要在代码中使用数据对象,必须设置对表单2.0对象库的引用 。在VBA添加参考资料如下:
进入VBA编辑器的“工具”菜单,选择信息资源网的“参考”项 。在出现的对话框中,向下滚动列表,直到找到合适的库(常见引用列在列表顶部,然后引用按字母顺序列出) 。找到代码需要的引用时,选中引用标题旁边的复选框,然后单击“确定” 。
2剪贴板剪贴板对象的特征这个物体的特点是什么,它是如何工作的?
OpenClipboard中的数据存储在全局内存中,因此大多数windows应用程序都可以访问其中的数据 。在观察相关API函数的前提下,应用程序可以自由打开剪贴板,读取剪贴板中的数据(GetClipboardData) 。或者清除空剪贴板(EmptyClipboard),然后设置剪贴板中的数据(SetClipboardData),最后关闭剪贴板(关闭剪贴板);
2)独占窗口规定应用程序对剪贴板的访问是独占的 。当一个应用程序使用OpenClipboard打开剪贴板时,其他程序不能再访问剪贴板,直到前一个程序使用CloseClipboard关闭剪贴板 。通常,当我们使用剪贴板时,我们不会感到受到其他程序的影响 。这是因为剪贴板中的所有数据操作都是在内存中进行的,速度非常快 。对于超大数据,应用程序也可以选择延迟渲染机制来保证速度 。但是在编程剪贴板的时候要注意:每次使用完剪贴板之后,一定要记得使用CloseClipBoard关闭;不要在OpenClipboard和CloseClipboard之间放置耗时的代码,以免影响其他程序的正常工作 。
3)标准设置剪贴板中数据的应用窗口称为剪贴板数据所有者,其句柄可以通过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函数 。如果该名称已经存在,函数将返回与该名称对应的数字 。如果此名称不存在,函数将返回一个以前没有使用过的数字,并且此名称和数字可以一直使用,直到系统关闭并重新启动 。


推荐阅读