ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 15873|回复: 17

[求助] Word 2003 中怎么用 VBA 清空剪贴板内容?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-9-24 13:45 | 显示全部楼层 |阅读模式
因为有时复制不少内容,觉得影响内存运作,喜欢清空剪贴板,我平时是用外部的看图程序 iview 来清空的,麻烦,请高人指教!3Q!

TA的精华主题

TA的得分主题

发表于 2011-9-24 14:05 | 显示全部楼层
  1. Dim objData As New DataObject
  2. objData.SetText ""
  3. objData.PutInClipboard
复制代码

TA的精华主题

TA的得分主题

发表于 2011-9-24 14:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Dim objData As New DataObject

之前请先引用 Microsoft  Forms 2.0 Object Library

TA的精华主题

TA的得分主题

发表于 2011-9-24 14:36 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-9-24 22:37 | 显示全部楼层
    经过试验,发现似乎清除了剪贴板,已经无法再粘贴,但剪贴板及外部的 iview 小看图程序的剪贴板并未显示灰色。我又看了 VBA 帮助,说 ObjectData 和 剪贴板 是两条路,我还是喜欢操作系统共用的这个剪贴板,就是清空后,在别的程序里面剪贴板也看着已经是灰色不可粘贴这种状态,因为 iview 报错,所以,我不想采用这种方法,想找到通用的清除剪贴板的方法,但是还是非常谢谢 wudixin96,3Q!

TA的精华主题

TA的得分主题

发表于 2011-9-24 23:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ppt用它不起作用

TA的精华主题

TA的得分主题

发表于 2011-9-24 23:14 | 显示全部楼层
  1. Private Declare Function OpenClipboard Lib "user32" (ByVal Hwnd As Long) As Long
  2. Private Declare Function CloseClipboard Lib "user32" () As Long
  3. Private Declare Function EmptyClipboard Lib "user32" () As Long
  4. Sub EraseClipboard()
  5.     If (OpenClipboard(0&)) Then
  6.         Call EmptyClipboard
  7.         Call CloseClipboard
  8.     End If
  9. End Sub
复制代码
再试下这个行不?

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-9-25 10:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢!仍然报错。

TA的精华主题

TA的得分主题

发表于 2011-9-25 10:56 | 显示全部楼层
413191246se 发表于 2011-9-25 10:20
谢谢!仍然报错。

不知你如何使用,我这没有错误

TA的精华主题

TA的得分主题

发表于 2011-9-25 12:28 | 显示全部楼层
由于在Office 2003版中,VBA不直接提供操作Office剪贴板的方法,因此只能借助API函数来完成。

主要思路:
①:先载入剪贴板窗口
②:然后找到剪贴板的窗口句柄
③:向剪贴板窗口发送鼠标按下和弹起的消息,模拟按下“全部清空”

这儿,以Word为例,其它Office程序(如Excel、PowerPoint)可以如法炮制。


'*************************************************************************
'作者:Joe Was
'功能:清空Office剪贴板
'整理:ExcelHome论坛
'测试环境:Word 2003
'相关链接:http://www.mrexcel.com/forum/showthread.php?t=167292
'*************************************************************************

'声明API函数
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'定义鼠标消息
Private Const WM_LBUTTONDOWN As Long = &H201&
Private Const WM_LBUTTONUP As Long = &H202&

Sub ClearClipBoard()

    Dim hWord, hClipBoard, hWindow As Long 'Word主窗口、剪贴板、临时窗口句柄
    Dim nXY As Long '剪贴板“全部清空”按钮的坐标
    Dim strCaption As String    'Word主窗口的标题

    Application.ShowClipboard  '打开剪贴板
    CommandBars("Task Pane").Visible = False '关闭任务窗格
   
'先获取Word主窗口的标题
    If Documents.Count = 0 Then   '没有文档打开
        strCaption = "Microsoft Word"
    Else
        strCaption = ActiveWindow.Caption & " - Microsoft Word"
    End If
   
    hWord = FindWindowEx(0&, 0&, "OpusApp", strCaption)   '获取Word主窗口句柄
    hWindow = FindWindowEx(hWord, 0&, "MsoWorkPane", "MsoWorkPane") '获取任务窗格窗口句柄
    hClipBoard = FindWindowEx(hWindow, 0&, "bosa_sdm_Microsoft Office Word 11.0", "Collect and Paste 2.0") '获取剪贴板窗口句柄
   
    If hClipBoard = 0 Then  '未知原因,没有找到剪贴板的窗口句柄
        MsgBox "剪贴板清空失败!"
        Exit Sub
    End If
   
    nXY = 100 + 10 * 65536   '(x,y)=(100,10),取(92,6)~(168,27)均可
   
    Call PostMessage(hClipBoard, WM_LBUTTONDOWN, 0&, nXY) '模拟鼠标按下
    Call PostMessage(hClipBoard, WM_LBUTTONUP, 0&, nXY) '模拟鼠标弹起
   
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-11 18:31 , Processed in 0.023998 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表