microsoftword中是否有一个函数(宏(可以自动跳过剪贴板中的任何内容?我正在处理宏,以检查剪贴板中是否有新内容,并在没有我参与过程的情况下在单词中通过它
请尝试这种方法:
-
在文档项目或Normal.dot中插入表单。只有在收到引用("Microsoft Forms 2.0对象库"(时才能执行此操作。现在您可以删除它。引用将保留。理论上,你可以直接添加引用,但有时Word不会在可能添加的引用之间显示它;
-
插入标准模块并粘贴下一个代码:
Sub testPutfromclipboard()
Dim clp As DataObject, nextLine As String
'nextLine = vbCrLf
Set clp = New DataObject
clp.GetFromClipboard
If clp.GetFormat(1) Then
If clp.GetText <> Empty Then
ActiveDocument.Content.InsertAfter Text:=nextLine & clp.GetText
clp.SetText Text:=Empty: clp.PutInClipboard
End If
End If
End Sub
- 运行它,剪贴板将粘贴在活动文档文本的末尾
如果要将其粘贴到下一行,只需取消对'nextLine = vbCrLf
行的注释。。。
您可以每秒轮询一次。
Public Declare Function GetClipboardOwner Lib "user32" () As Long
Public Declare Function GetClipboardSequenceNumber Lib "user32" () As Long
RTFString = RTFString & "b1 Clipboard Sequence Number: b0 " & CStr(GetClipboardSequenceNumber()) & "par" & vbCr
RTFString = RTFString & "b1 Clipboard Owner Window Handle: b0 " & CStr(GetClipboardOwner()) & "par" & vbCr
Msgbox RTFString
还有一种更好的方法,但它需要对表单进行子类。请参阅https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-addclipboardformatlistener
你不需要对窗体进行子类,你可以对Excel的主窗口进行子类。