排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
2021年报告
2022年报告
年度数据库
2020年openGauss
2021年TiDB
2022年PolarDB
2023年OceanBase
首页
资讯
活动
大会
学习
课程中心
推荐优质内容、热门课程
学习路径
预设学习计划、达成学习目标
知识图谱
综合了解技术体系知识点
课程库
快速筛选、搜索相关课程
视频学习
专业视频分享技术知识
电子文档
快速搜索阅览技术文档
文档
问答
服务
智能助手小墨
关于数据库相关的问题,您都可以问我
数据库巡检平台
脚本采集百余项,在线智能分析总结
SQLRUN
在线数据库即时SQL运行平台
数据库实训平台
实操环境、开箱即用、一键连接
数据库管理服务
汇聚顶级数据库专家,具备多数据库运维能力
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
我的订单
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
资讯
活动
大会
课程
文档
排行
问答
我的订单
首页
专家团队
智能助手
在线工具
SQLRUN
在线数据库即时SQL运行平台
数据库在线实训平台
实操环境、开箱即用、一键连接
AWR分析
上传AWR报告,查看分析结果
SQL格式化
快速格式化绝大多数SQL语句
SQL审核
审核编写规范,提升执行效率
PLSQL解密
解密超4000字符的PL/SQL语句
OraC函数
查询Oracle C 函数的详细描述
智能助手小墨
关于数据库相关的问题,您都可以问我
精选案例
新闻资讯
云市场
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
专家团队
智能助手
精选案例
新闻资讯
云市场
微信扫码
复制链接
新浪微博
分享数说
采集到收藏夹
分享到数说
首页
/
剪贴板Clipboard的定义及VBA的引用
剪贴板Clipboard的定义及VBA的引用
VBA语言専攻
2022-09-18
274
【分享成果,随喜正能量】和无关紧要的事情过不去,便是把自己推入麻烦中,很多时候,烦琐并不来自外界,而是关乎内心的,定力。。
《VBA信息获取与处理》教程(10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。
教程共两册,八十四讲。今日的内容是”专题十二 VBA中剪贴板(Clipboard)的应用”:剪贴板Clipboard的定义及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 对象可轻松访问剪贴板并从中读取和向其写入数据。我们可以利用的操作有:从剪贴板读取数据;确定存储在剪贴板中的文件类型;清除剪贴板的数据;将数据写入剪贴板。
本节知识点回向:
①什么是剪贴板?
② 剪贴板的特点是什么?
③ 剪贴板的操作有哪些?
我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序
:
【分享成果,随喜正能量】
世间万物,本不是你的求也求不来,原本属于你的躲也躲不掉,人生哪有多如意,万事只求半称心。越去争,心也累;越去怨,命越苦。人生,不争不怨,纷纭的世界,独守己心,淡定从容,就拥有一份宁静和美好。
。
剪贴板
vba
文章转载自
VBA语言専攻
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨