如何在截图后清除剪贴板(Application.cutcopymode = False 不起作用)?

How can I clear the clipboard after taking a screenshot (Application.cutcopymode = False doesn't work)?

我正在使用 API 调用截取屏幕截图。问题是,该屏幕截图将保留在剪贴板上,并且 Application.CutCopyMode = False 仅当您直接从 Excel 复制内容时才有效。

一种解决方法是在截取屏幕截图后复制 Excel 中的内容,然后使用 Application.CutCopyMode,但如果有更正式的方法来执行此操作,将会有所帮助。到目前为止,我已经尝试了以下但没有用

Sub clear()
    Dim db As MSForms.DataObject
    db.clear
End Sub

我认为是因为application.cutcopymode = false停止复制剪切模式但没有清除剪贴板。

也许你可以像这样用空字符串设置剪贴板:

Dim emptyDataString as DataObject
Set emptyDataString = new DataObject 
emptyDataString.SetText ""
emptyDataString.PutInClipboard

创建一个名为 globals 的模块并将它们放在那里。

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

然后从任何地方使用此代码。

OpenClipboard (0&)
EmptyClipboard
CloseClipboard