百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

UDF之剪贴板Clipboard文本操作 剪贴板运行命令

yuyutoo 2024-10-13 00:35 4 浏览 0 评论

【分享成果,随喜正能量】所谓护生,实为护心。天地之间,生命最为珍贵,我们能做的,是用力所能及的力量,去善待生命,去涵养自己的慈心。敬守慈心,善护生命,便是最有意义的护生。。

《VBA信息获取与处理》教程(10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。

教程共两册,二十个专题。今日的内容是“专题十二 VBA中剪贴板(Clipboard)的应用”:UDF之剪贴板Clipboard文本操作

第三节 利用自定义函数完成剪贴板Clipboard的文本操作

在上一讲中,我们对剪贴板中的文本简单操作进行了了解,是利用MSForms.DataObject对象来完成的,这种对象有前期绑定和后期绑定两种方式都可以实现目标。今天我们讲解利用自定义函数来完成对剪贴板的操作。这种方式的操作更接近于实际的操作场景。

1 DataObject 对象中有关Clipboard的操作

1)DataObject 对象 为了大家更好的理解这个对象,我们先来看看这个对象的解读:

DataObject 可包括一段针对剪贴板文本格式的文本和一段针对每种其他文本格式(如自定义格式和用户定义的格式)的文本。

DataObject 支持涉及剪贴板和文本的拖放操作的命令。 在启动涉及剪贴板的操作(如 GetText)或拖放操作时,该操作中涉及的数据将移动到 DataObject。

如果您将文本字符串复制到 DataObject,则 DataObject 将存储文本字符串。 如果您将同一格式的第二个字符串复制到 DataObject,则 DataObject 将弃用第一个文本字符串并存储第二个字符串的副本。 它将存储一段指定格式的文本并保留最近操作中的文本。

2) GetFromClipboard 方法 此方法将剪贴板中的数据复制到DataObject。

语法:String = object. GetFromClipboard( )


3) PutInClipboard 方法 此方法将数据从DataObject移动到剪贴板。

语法:object. PutInClipboard

“PutInClipboard”方法用于“文本”格式的“DataObject”的内容替换了剪贴板的内容。


4)GetFormat 方法 返回一个指定DataObject上是否有特定格式的整数值

语法: object. GetFormat(format)

format 的设置是:1 文本格式;一个字符串或 1 以外的任何整数从 SetText 传递给

DataObject 的用户定义的 DataObject 格式。

  • GetFormat 方法在 DataObject 上的当前格式列表中搜索格式。 如果格式位于 DataObject 上,GetFormat 将返回 True;否则 GetFormat 返回 False。
  • DataObject 当前只支持文本格式。


5) GetText 方法 从DataObject 中检索使用指定格式的文本字符串。

语法:String = object. GetText( [ format ] )

参数:format 可选。 一个用于指定要从 DataObject 中检索的数据的格式的字符串或整数。其取值同上。

2 利用自定义函数提供用户剪贴板文本的代码

有了上面的基本知识点,我们来看如何利用自定义函数实现提供给用户剪贴板的文本内容,我先给出我的代码:

Sub mynzB()

Sheets("sheet1").Select

Range("A1").Copy

UU = GetClipBoardString

If UU <> "" Then

MsgBox GetClipBoardString

Else

MsgBox "剪贴板是空"

End If

End Sub

Private Function GetClipBoardString() As String

On Error Resume Next

Dim MyData As New DataObject

GetClipBoardString = ""

MyData.GetFromClipboard

If MyData.GetFormat(1) = True Then

GetClipBoardString = MyData.GetText

Set MyData = Nothing

End If

End Function

代码截图:

代码讲解:

1)GetClipBoardString 是我们自定义的一个提取剪切板文本内容的过程。

2)MyData.GetFromClipboard 将剪贴板中的数据复制到MyData对象中

3)If MyData.GetFormat(1) = True 是判断数据格式是否为文本。

4)GetClipBoardString = MyData.GetText 提取文本数据作为函数的返回值

3 利用自定义函数实现剪贴板操作的实现效果

我们点击运行按钮,下面是工作表的界面运行效果:

这讲给大家讲解了利用自定义函数实现剪贴板操作的方法,是非常重要的一讲内容。

本节知识点回向:

① 实现剪贴板操作的DataObject 对象的方法会利用到哪些?

② 以上方法的局限性是什么?

本讲代码参考文件:012工作表.xlsm

我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:

【分享成果,随喜正能量】正直者,顺道而行,顺理而言,公平无私。为人善良,行事正直,坦坦荡荡无愧于心。正直的品行,是我们立足于世最纯净的底色。

相关推荐

国内外注塑机及电脑密码大全(常见注塑机通用密码)

一、国外注塑机(日本、德国等)东洋注塑机万能码:9422345日精注塑机密码:222|7777DAMEG注塑机密码:000000000新泻注塑机密码:241650|261450住友注塑机密码:...

并发编程实战来咯(并发编程的艺术和并发编程实战)

提到并发编程,就不得不提C++ConcurrencyinAction(SecondEdition)(《C++并发编程实战第2版》)啦!《C++并发编程实战第2版》英文原版&中文译版看到这个...

无锁队列Disruptor原理解析(无锁队列应用场景)

队列比较队列...

理解 Memory barrier(内存屏障)(内存屏障 volatile)

...

并发编程 --- CAS原子操作(cas概念、原子类实现原理)

...

无锁CAS(附无锁队列的实现)(cas是一种无锁算法)

本文所有代码对应的Github链接为:https://github.com/dongyusheng/csdn-code/tree/master/cas_queue...

Linux高性能服务器设计(linux 服务器性能)

C10K和C10M计算机领域的很多技术都是需求推动的,上世纪90年代,由于互联网的飞速发展,网络服务器无法支撑快速增长的用户规模。1999年,DanKegel提出了著名的C10问题:一台服务器上同时...

浅谈Go语言的并发控制(go语言 并发)

前言本文原创,著作权归...

Datenlord |Etcd 客户端缓存实践(etcd 数据存储)

简介和背景...

无锁编程——从CPU缓存一致性讲到内存模型

缓存是一个非常常用的工程优化手段,其核心在于提升数据访问的效率。缓存思想基于局部性原理,这个原理包括时间局部性和空间局部性两部分:...

打通 JAVA 与内核系列之 一 ReentrantLock 锁的实现原理

...

如何利用CAS技术实现无锁队列(cas会锁总线吗)

linux服务器开发相关视频解析:...

Kotlin协程之一文看懂Channel管道

概述Channel类似于Java的BlockingQueue阻塞队列,不同之处在于Channel提供了挂起的send()和receive()方法。另外,通道Channel可以...

详解C++高性能无锁队列的原理与实现

1.无锁队列原理1.1.队列操作模型...

Javascript 多线程编程的前世今生

...

取消回复欢迎 发表评论: