Vba microsoft word中是否有一个函数(宏)可以自动跳过剪贴板中的任何内容?

Vba microsoft word中是否有一个函数(宏)可以自动跳过剪贴板中的任何内容?,vba,ms-word,copy,Vba,Ms Word,Copy,microsoft word中是否有一个函数宏可以自动跳过剪贴板中的任何内容? 我正在处理宏,以检查剪贴板中是否有新内容,并在word中跳过它,而不参与此过程请尝试此方法: 在文档项目或Normal.dot中插入表单。只有在收到“Microsoft Forms 2.0对象库”引用时,才必须执行此操作。现在你可以删除它了。参考资料将保留。从理论上讲,你可以直接添加引用,但有时单词在可能添加的引用之间不显示它 插入标准模块并粘贴下一个代码: 运行它,剪贴板上的一个图标将粘贴到活动文档文本的末尾。 如

microsoft word中是否有一个函数宏可以自动跳过剪贴板中的任何内容?
我正在处理宏,以检查剪贴板中是否有新内容,并在word中跳过它,而不参与此过程

请尝试此方法:

在文档项目或Normal.dot中插入表单。只有在收到“Microsoft Forms 2.0对象库”引用时,才必须执行此操作。现在你可以删除它了。参考资料将保留。从理论上讲,你可以直接添加引用,但有时单词在可能添加的引用之间不显示它

插入标准模块并粘贴下一个代码:

运行它,剪贴板上的一个图标将粘贴到活动文档文本的末尾。
如果要将其粘贴到下一行,只需取消注释“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
还有一种更好的方法,但它要求您将表单分为子类。看


您不需要对表单进行子分类,您可以对Excel的主窗口进行子分类。

听起来像是一个。你们到底想做什么?我想从程序中复制一个段落,并在word文档中跳过它,这个程序只允许复制4个句子,所以我试图通过自动跳过word文档中剪贴板中的任何内容来剪切过程,而不必去那里。你需要某种类型的钩子进入Windows剪贴板,以便让剪贴板告诉你其中发生了什么事。可能有一些低级的Win32 API函数可以做到这一点,但如果您不知道自己在做什么,我不建议您采用这种方法。任何其他方法都无法告诉您剪贴板内容是否是新的,或者它在Word中是否可用。你说你想粘贴段落。如果某个网站URL或某张图片最终出现在剪贴板中,该怎么办?剪贴板是操作系统范围的,不仅仅是Word内部。您有权访问该程序的源代码吗?那个程序有可以使用的API吗?您能在Spy++中找到包含需要复制的数据的窗口吗?如果是这样,那么您可能可以使用Win32 API以一种比通过剪贴板更健壮的方式与该程序集成。。。。OP正在寻找一种方法来知道新内容何时写入剪贴板-这不会剪切它。@Yahya-uu它是粘贴,而不是过去,并且数据对象类型是在MSForms类型库中定义的,这个答案解释了如何正确引用:您跳过了第1步。@Yahya-\ux:您是否如第一步中所述添加了对“Microsoft Forms 2.0对象库”的引用?是的,它需要一些轮询机制,然后,从这里开始,一切都是下坡路:IMO解决实际OP的问题从另一个正在运行的应用程序中读取内容而不涉及剪贴板将是一个更好的解决方案,但OP没有给我们任何东西可以考虑,所以…@Mathieu Guindon:我可以接受这一点。使用API从窗口提取文本并不复杂。基本上,如果我们能够使用Spy++…访问应用程序接口,FindWindow、FindWindowEx、GetWindowText、GetWindnowTextLength、GetWindow和SendMessage就可以了。。。。
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