暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

VBA剪贴板操作之自定义函数应用

VBA语言専攻 2022-10-20
199
【分享成果,随喜正能量】人不该太清醒,过去的事情就让它过去,不必反复咀嚼。一生不长,重要的事儿也没那么多。天亮了,又赚了。人可以真实地活着,但不要太认真。水至清则无鱼,人至察则无徒。完美主义者最大的悲哀,就是活得不真实。
《VBA信息获取与处理》教程(10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。教程共两册,八十四讲。今日的内容是”专题十二  VBA中剪贴板(Clipboard)的应用”:VBA剪贴板操作之自定义函数应用

第三节  利用自定义函数完成剪贴板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 格式。

lGetFormat 方法在 DataObject 上的当前格式列表中搜索格式。 如果格式位于 DataObject 上,GetFormat 将返回 True;否则 GetFormat 返回 False。
lDataObject 当前只支持文本格式。
 
 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实践经验,全部浓缩在下面的各个教程中
【分享成果,随喜正能量】在真实的世界里,有苦有乐,有酸有甜。人活着最大的乐趣,就是从痛苦中把快乐找出来。什么都追求好,是一种积极的思想,却不是最好的活法。你随和,生活才随和。

文章转载自VBA语言専攻,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论