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

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

yuyutoo 2024-10-13 00:35 5 浏览 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实践经验,全部浓缩在下面的各个教程中,教程学习顺序:

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

相关推荐

对volatile,synchronized,AQS的加锁解锁原理的一些理解

一、为什么要加锁,要实现同步多线程编程中,有可能会出现多个线程同时访问同一个共享、可变资源的情况,这个资源我们称之其为临界资源;这种资源可能是:对象、变量、文件等。...

注意,不能错过的CAS+volatile实现同步代码块

前言:最近看到有人说可以使用CAS+volatile实现同步代码块。心想,确实是可以实现的呀!因为AbstractQueuedSynchronizer(简称AQS)内部就是通过CAS+...

面试并发volatile关键字时,我们应该具备哪些谈资?

提前发现更多精彩内容,请访问https://dayarch.top/提前发现更多精彩内容,请访问https://dayarch.top/提前发现更多精彩内容,请访问https://dayarch...

无锁同步-JAVA之Volatile、Atomic和CAS

1、概要本文是无锁同步系列文章的第二篇,主要探讨JAVA中的原子操作,以及如何进行无锁同步。关于JAVA中的原子操作,我们很容易想到的是Volatile变量、java.util.concurrent....

C/C++面试题(二):std::atomic与volatile

volatile是C/C++中的一个关键字,用于告知编译器某个变量的值可能会在程序的控制之外被意外修改(例如被硬件、中断服务程序、多线程环境或其他外部代理)。为了防止编译器对代码进行某些可能破坏...

VOCs(Volatile Organic Compounds)挥发性有机化合物及测试方法

经常看到一些三防漆、涂料、油漆类产品的介绍中提到VOC、VOCs等概念,那么什么是VOC、VOCs和TVOC,VOCs主要包括哪些物质?VOCs的来源有哪些?VOCs的危害及国家标准是什么?一、V...

对volatile 及happen—before的理解

happen—before规则介绍Java...

这一篇我们来了解Synchronized、Volatile、Final关键字

题外话:蓝银王觉醒了!!--来自于一个斗罗大陆动漫爱好者(鹅,打钱!)湿兄这两天回家了,办了点大事,回来的时候我弟弟还舍不得我,哭着不愿意让我回京(我弟还是小学),我也心里很不舍,但是还是要回京奋斗...

关于 Java 关键字 volatile 的总结

1什么是volatilevolatile是Java的一个关键字,它提供了一种轻量级的同步机制。相比于重量级锁synchronized,volatile更为轻量级,因为它不会引起线程上下文...

大白话聊聊Java并发面试问题之volatile到底是什么?

用最简单的大白话,加上多张图给大家说一下,volatile到底是什么?...

为什么要有volatile关键字(volatile 关键字为什么不能保证原子性)

在嵌入式编程和多线程编程中,我们常会见到volatile关键字声明的变量。下面说一下volatile关键字的作用:1.保持变量内存可见简而言之就是用volatile声明的变量会告诉编译器和处理器,这个...

Java的volatile到底怎么理解?(java volatitle)

我们都知道,在Java中有很多的关键字,比如synchronize比如volatile,这些都是一些比较关键的,还有final,今天我们就来聊一下这个volatile因为这个vo...

Java多线程编程中的volatile关键字:解密神秘的共享内存

Java多线程编程中的volatile关键字:解密神秘的共享内存在Java多线程编程的世界里,volatile关键字就像一位低调却至关重要的守护者。它默默无闻地站岗放哨,确保多个线程之间能够正确地共享...

你了解volatile关键字的作用吗?(关键字volatile有什么含意?并举出三个不同的例子?)

【死记硬背】volatile关键字主要用于保持内存的变量可见性和禁止重排序。变量可见性:当一个线程改变了变量的值,那么新的值对于其他线程也是可以立即获取到的。禁止重排序:...

谈谈你对volatile 关键字作用和原理的理解

一位6年工作经验的小伙伴,在某里二面的时候被问到“volatile”关键字。然后,就没有然后了…同样,还有一位4年的小伙伴,去某团面试也被问到“volatile关键字“。然后,也没有然后了…...

取消回复欢迎 发表评论: