This works fine for me.
Private Declare Function apiOpenClipboard Lib "User32" _
Alias "OpenClipboard" _
(ByVal hWnd As Long) _
As Long
Private Declare Function apiEmptyClipboard Lib "User32" _
Alias "EmptyClipboard" _
() As Long
Private Declare Function apiCloseClipboard Lib "User32" _
Alias "CloseClipboard" _
() As Long
Function EmptyClipboard()
If apiOpenClipboard(0&) <> 0 Then
Call apiEmptyClipboard
Call apiCloseClipboard
End If
End Function
Edit 20161127
Here's another alternative
'Currently uses Late Binding so no References Req'd
Function ClearCipboard()
'Early binding will requires a Reference to 'Microsoft Forms 2.0 Object Library'
Dim oData As Object 'New MSForms.DataObject
Set oData = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
oData.SetText Text:=Empty
oData.PutInClipboard
Set oData = Nothing
End Function