我的编程空间,编程开发者的网络收藏夹
学习永远不晚

VBA 剪切板

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

VBA 剪切板

在VBE中,插入一个类模块(注意是类模块,不是标准模块),并将其命名为“ClipBoard”,贴入下面的代码

Private Const CF_UNICODETEXT As Long = 13&Private Const CF_TEXT As Long = 1&Private Const GMEM_ZEROINIT = &H40Private Const GMEM_MOVEABLE = &H2Private Const GHND = (GMEM_MOVEABLE Or GMEM_ZEROINIT)#If Win64 ThenPrivate Declare PtrSafe Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As LongPtr)Private Declare PtrSafe Function GlobalUnlock Lib "kernel32" (ByVal hMem As LongLong) As LongPrivate Declare PtrSafe Function GlobalLock Lib "kernel32" (ByVal hMem As LongLong) As LongPtrPrivate Declare PtrSafe Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As LongLong) As LongPtrPrivate Declare PtrSafe Function GlobalSize Lib "kernel32" (ByVal hMem As LongPtr) As LongPtrPrivate Declare PtrSafe Function CloseClipboard Lib "user32" () As LongPrivate Declare PtrSafe Function OpenClipboard Lib "user32" (ByVal hWnd As LongLong) As LongPrivate Declare PtrSafe Function EmptyClipboard Lib "user32" () As LongPrivate Declare PtrSafe Function CountClipboardFormats Lib "user32" () As LongPrivate Declare PtrSafe Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As Any, ByVal lpString2 As String) As LongPtrPrivate Declare PtrSafe Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As LongPtrPrivate Declare PtrSafe Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hMem As LongLong) As LongLongPrivate Declare PtrSafe Function EnumClipboardFormats Lib "user32" (ByVal wFormat As Long) As LongPrivate Declare PtrSafe Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Long) As Long#ElsePrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As LongPrivate Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As LongPrivate Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As LongPrivate Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As LongPrivate Declare Function CloseClipboard Lib "user32" () As LongPrivate Declare Function OpenClipboard Lib "user32" (ByVal hWnd As Long) As LongPrivate Declare Function EmptyClipboard Lib "user32" () As LongPrivate Declare Function CountClipboardFormats Lib "user32" () As LongPrivate Declare Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, ByVal lpString2 As Any) As LongPrivate Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As LongPrivate Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hMem As Long) As LongPrivate Declare Function EnumClipboardFormats Lib "user32" (ByVal wFormat As Long) As LongPrivate Declare Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Long) As Long#End IfPublic Function ClipBoard_HasFormat(ByVal peCBFormat) As Boolean Dim lRet As Long If OpenClipboard(0&) > 0 Then   lRet = EnumClipboardFormats(0)   If lRet <> 0 Then     Do       If lRet = peCBFormat Then         ClipBoard_HasFormat = True         Exit Do       End If       lRet = EnumClipboardFormats(lRet)     Loop While lRet <> 0   End If     CloseClipboard Else   MsgBox "不能打開剪切板", vbCritical End IfEnd FunctionPublic Function GetClipBoard() As String#If Win64 Then Dim hData As LongPtr Dim lByteLen As LongPtr Dim lPointer As LongPtr Dim lSize As LongLong#Else Dim hData As Long Dim lByteLen As Long Dim lPointer As Long Dim lSize As Long#End If Dim lRet As Long Dim abData() As Byte Dim sText As String lRet = OpenClipboard(0&) If lRet > 0 Then   hData = GetClipboardData(CF_TEXT)   If hData <> 0 Then     lByteLen = GlobalSize(hData)     lSize = GlobalSize(hData)     lPointer = GlobalLock(hData)     If lSize > 0 Then       ReDim abData(0 To CLng(lSize) - CLng(1)) As Byte       CopyMemory abData(0), ByVal lPointer, lSize       GlobalUnlock hData       sText = StrConv(abData, vbUnicode)     End If   Else     MsgBox "不能打開剪切板", vbCritical   End If     CloseClipboard End If GetClipBoard = sTextEnd FunctionPublic Function SetClipboard(clipText As String) As Boolean #If Win64 Then Dim hGlobalMemory As LongLong Dim lpGlobalMemory As LongPtr Dim hClipMemory As LongLong #Else Dim hGlobalMemory As Long Dim lpGlobalMemory As Long Dim hClipMemory As Long #End If  Dim fOK As Boolean fOK = True #If Win64 Then hGlobalMemory = GlobalAlloc(GHND, LenB(clipText) + 1) #Else hGlobalMemory = GlobalAlloc(GHND, Len(clipText) + 1) #End If If hGlobalMemory = 0 Then   Exit Function End If lpGlobalMemory = GlobalLock(hGlobalMemory) lpGlobalMemory = lstrcpy(lpGlobalMemory, clipText) If GlobalUnlock(hGlobalMemory) <> 0 Then   fOK = False   GoTo clean_exit End If If OpenClipboard(0&) = 0 Then   fOK = False   Exit Function End If EmptyClipboard hClipMemory = SetClipboardData(CF_TEXT, hGlobalMemory)clean_exit: CloseClipboard ClipBoard_SetData = fOKEnd FunctionPublic Sub ClearClipboard() OpenClipboard 0& EmptyClipboard CloseClipboardEnd SubPublic Function IsEmpty() As Boolean OpenClipboard 0& IsEmpty = (CountClipboardFormats = 0) CloseClipboardEnd FunctionPublic Function IsString() As Boolean OpenClipboard 0& IsString = (IsClipboardFormatAvailable(CF_UNICODETEXT)) Or (IsClipboardFormatAvailable(CF_TEXT)) CloseClipboardEnd FunctionPrivate Sub Class_Terminate() CloseClipboardEnd Sub

插入一个标准模块,贴入下面代码

Sub PutInClipboard(ByVal strText As String) Dim clip As ClipBoard  Set clip = New ClipBoard clip.SetClipboard strTextEnd Sub

就可以给这个调用这个Sub,传入想要复制到剪切板的文本了。

Call PutInClipboard("变量或者文本")

来源地址:https://blog.csdn.net/wuchunyu002/article/details/133777231

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

VBA 剪切板

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

2023-10-11

win11剪切板如何打开

这篇文章主要介绍“win11剪切板如何打开”,在日常操作中,相信很多人在win11剪切板如何打开问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win11剪切板如何打开”的疑惑有所帮助!接下来,请跟着小编一起来
2023-07-02

word剪切板如何打开

这篇“word剪切板如何打开”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“word剪切板如何打开”文章吧。1、首先打开桌面的
2023-07-02

windows剪切板如何打开

本文小编为大家详细介绍“windows剪切板如何打开”,内容详细,步骤清晰,细节处理妥当,希望这篇“windows剪切板如何打开”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。剪切板打开方法:1、首先按下快捷键“w
2023-07-02

Windows下python获取剪切板的

代码如下:# -*- coding: utf-8 -*-import win32clipboard as wcimport win32condef getCopyText(): wc.OpenClipboard() copy_t
2023-01-31

win10清空剪切板的方法

这篇文章主要介绍“win10清空剪切板的方法”,在日常操作中,相信很多人在win10清空剪切板的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win10清空剪切板的方法”的疑惑有所帮助!接下来,请跟着小编
2023-06-14

JS复制文本到剪切板 copyText

JS中复制文本到剪切板的方法有四种:document.execCommand():跨浏览器兼容,但需用户交互。ClipboardAPI:无需用户交互,但并非所有浏览器支持。createElement():无需用户交互,但可能与屏幕阅读器不兼容。RangyCopy:功能丰富,需额外依赖项。建议根据要求选择最合适的方法。最佳实践包括明确显示复制状态、处理错误和遵守用户隐私。
JS复制文本到剪切板 copyText
2024-04-02

Android使用剪切板传递数据

在Activity之间传递数据还可以利用一些技巧,不管windows还是Linux操作系统,都会支持一种叫剪切板的技术,也就是某一个程序将一些数据复制到剪切板上,然后其他的任何程序都可以从剪切板中获取数据,在Android系统中也存在此技术
2022-06-06

android利用剪切板传递数据

本文主要介绍android应用android系统中剪切板进行数据的传递,首先讲解的是传递简单数据,然后讲解传递对象类型的数据。 所有实例均在android api 15下测试通过,所以先新建一个android应用程序。 - 传递简单类型数据
2022-06-06

win10剪切板数据如何清除

这篇文章主要讲解了“win10剪切板数据如何清除”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“win10剪切板数据如何清除”吧!1.按“Windows+I”键,打开“Windows设置”,点
2023-07-01

win10如何清空剪切板?Win10系统清空剪贴板图文教程

Win10剪切板如何清空内容?复制、粘贴、剪切等是电脑最常见的操作,不过在最新的Win10系统中,有时候会遇到这样的提示:剪贴板满了哦~新内容将覆盖原来的项目,请及时清理,如图。然而很多用户会遇到找不到Win10剪切板在哪,不知道如何清理的
2023-05-21

js剪切板Clipboard.js 使用方法是什么

本篇文章为大家展示了js剪切板Clipboard.js 使用方法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。js剪切板Clipboard.js clipboard.js是一个用来设置剪切板的
2023-06-04

苹果电脑的剪切板如何打开

本篇内容介绍了“苹果电脑的剪切板如何打开”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!苹果电脑的剪切板打开方法:1、首先打开苹果电脑,然后点
2023-07-02

解决远程服务器剪切板失效

在windows远程桌面会话下,当前机器传输文件时容易被其他机器远程服务器导致剪切板失效解决方法很简单,就是重启rdpclip.exe进程:步骤如下1.打开任务管理器2.【进程】3. 选择rdpclip.exe,结束进程4.【任务管理器】>
2023-06-04

win7电脑剪切板记录在哪里找

剪贴板是一块特殊的存储空间,在电脑中起到临时存储的作用,允许在不同的软件之间复制和粘贴文本信息。关于win7电脑剪切板记录在哪里找、如何打开许多客户还不清楚,其实操作很简单的,你可以在菜单栏的输入框输入cmd去调成命令提示符窗口,输入“cl
2023-07-16

android实现文本复制到剪切板功能(ClipboardManager)

注意:导包的时候 API 11之前: android.text.ClipboardManagerAPI 11之后: android.content.ClipboardManager代码如下:/** * 实现文本复制功能 * add by w
2022-06-06

怎么在Html5中实现一个剪切板功能

这期内容当中小编将会给大家带来有关怎么在Html5中实现一个剪切板功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.不带input输入框的原生js方法这种情况适用于复制非输入框中的文本到剪切板
2023-06-09

VBS怎么实现将字符串写入剪切板

本篇内容主要讲解“VBS怎么实现将字符串写入剪切板”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“VBS怎么实现将字符串写入剪切板”吧!函数代码: 复制代码 代码如下:Sub CopyString
2023-06-08

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录