在Office 365中清除剪贴板 [英] Clearing the clipboard in Office 365
本文介绍了在Office 365中清除剪贴板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用的是64位Windows 10下的Office 365。我正在试着清理剪贴板。宏录制器生成空子项。
以下尝试主要来自How to Clear Office Clipboard with VBA:
Option Explicit
Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function EmptyClipboard Lib "user32" () As Long
Public Declare Function CloseClipboard Lib "user32" () As Long
Public Sub ClearClipboardA()
Application.CutCopyMode = False
End Sub
Public Sub ClearClipBoardB()
' Source: http://www.vbaexpress.com/kb/getarticle.php?kb_id=462
Dim oData As New DataObject
oData.SetText Text:=Empty ' Clear
oData.PutInClipboard ' Putting empty text into the clipboard to empty it
End Sub
Public Sub ClearClipboardC()
OpenClipboard (0&)
EmptyClipboard
CloseClipboard
End Sub
版本A:
版本B:在不清除剪贴板的情况下运行。不久将出现一个黄色的小状态窗口:找不到方法或数据成员
第7个,共24个剪贴板|未提取元素&q;
(翻译成英文)
版本C:似乎没有发生任何事情。
在上面的引用中,用户iamstraine写道:".如果任何人正在寻找如何在64位的Office 365中执行此操作,您现在需要使用向后兼容性的修改来实现此操作:Private Declare PtrSafe
和LongPtr
,因为您对这些值所做的两个更改将解决问题并使其仍然有效。"
我找到一个对Microsoft页的引用,其中可能已经执行了此操作:
使用此处显示的Subs,我可以将文本插入剪贴板并从中提取文本,但不能将其清除。
推荐答案
清除办公剪贴板(从Excel):
#If VBA7 Then
Private Declare PtrSafe Function AccessibleChildren Lib "oleacc" (ByVal paccContainer As Office.IAccessible, _
ByVal iChildStart As Long, ByVal cChildren As Long, _
ByRef rgvarChildren As Any, ByRef pcObtained As Long) As Long
Public Const myVBA7 As Long = 1
#Else
Private Declare Function AccessibleChildren Lib "oleacc" (ByVal paccContainer As Office.IAccessible, _
ByVal iChildStart As Long, ByVal cChildren As Long, _
ByRef rgvarChildren As Any, ByRef pcObtained As Long) As Long
Public Const myVBA7 As Long = 0
#End If
Public Sub EvRClearOfficeClipBoard()
Dim cmnB, IsVis As Boolean, j As Long, Arr As Variant
Arr = Array(4, 7, 2, 0) '4 and 2 for 32 bit, 7 and 0 for 64 bit
Set cmnB = Application.CommandBars("Office Clipboard")
IsVis = cmnB.Visible
If Not IsVis Then
cmnB.Visible = True
DoEvents
End If
For j = 1 To Arr(0 + myVBA7)
AccessibleChildren cmnB, Choose(j, 0, 3, 0, 3, 0, 3, 1), 1, cmnB, 1
Next
cmnB.accDoDefaultAction CLng(Arr(2 + myVBA7))
Application.CommandBars("Office Clipboard").Visible = IsVis
End Sub
这篇关于在Office 365中清除剪贴板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文