龙空技术网

UDF之剪贴板Clipboard文本操作

VBA语言専攻 142

前言:

此刻咱们对“clipboard copy”大概比较重视,咱们都需要分析一些“clipboard copy”的相关文章。那么小编在网摘上搜集了一些关于“clipboard copy””的相关内容,希望咱们能喜欢,各位老铁们快快来学习一下吧!

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

《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实践经验,全部浓缩在下面的各个教程中,教程学习顺序:

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

标签: #clipboard copy