Option Explicit '------------------------------------------------------------------------------' ' ' ' Found on 30.09.2019 at ' ' https://en.wikibooks.org/wiki/Visual_Basic_for_Applications/Clipboard_VBA ' ' ' '------------------------------------------------------------------------------' Private Declare Function OpenClipboard _ Lib "user32.dll" (ByVal hWnd As Long) As Long Private Declare Function EmptyClipboard _ Lib "user32.dll" () As Long Private Declare Function CloseClipboard _ Lib "user32.dll" () As Long Private Declare Function IsClipboardFormatAvailable Lib _ "user32.dll" (ByVal wFormat As Long) As Long Private Declare Function GetClipboardData _ Lib "user32.dll" (ByVal wFormat As Long) As Long Private Declare Function SetClipboardData _ Lib "user32.dll" (ByVal wFormat As Long, _ ByVal hMem As Long) As Long Private Declare Function GlobalAlloc _ Lib "kernel32.dll" (ByVal wFlags As Long, _ ByVal dwBytes As Long) As Long Private Declare Function GlobalLock _ Lib "kernel32.dll" (ByVal hMem As Long) As Long Private Declare Function GlobalUnlock _ Lib "kernel32.dll" (ByVal hMem As Long) As Long Private Declare Function GlobalSize _ Lib "kernel32" (ByVal hMem As Long) As Long Private Declare Function lstrcpy _ Lib "kernel32.dll" _ Alias "lstrcpyW" (ByVal lpString1 As Long, _ ByVal lpString2 As Long) As Long Function OldClipBoardCut(ClipText As String) 'sets the clipboard with parameter string Const GMEM_MOVEABLE As Long = &H2 Const GMEM_ZEROINIT As Long = &H40 Const CF_UNICODETEXT As Long = &HD Dim iStrPtr As Long Dim iLen As Long Dim iLock As Long OpenClipboard 0& EmptyClipboard iLen = LenB(ClipText) + 2& iStrPtr = GlobalAlloc(GMEM_MOVEABLE Or GMEM_ZEROINIT, iLen) iLock = GlobalLock(iStrPtr) lstrcpy iLock, StrPtr(ClipText) GlobalUnlock iStrPtr SetClipboardData CF_UNICODETEXT, iStrPtr CloseClipboard End Function Function OldClipBoardPaste() As String 'gets the clipboard text in function name Const CF_UNICODETEXT As Long = 13& Dim iStrPtr As Long Dim iLen As Long Dim iLock As Long Dim ClipText As String OpenClipboard 0& If IsClipboardFormatAvailable(CF_UNICODETEXT) Then iStrPtr = GetClipboardData(CF_UNICODETEXT) If iStrPtr Then iLock = GlobalLock(iStrPtr) iLen = GlobalSize(iStrPtr) ClipText = String$(iLen \ 2& - 1&, vbNullChar) lstrcpy StrPtr(ClipText), iLock GlobalUnlock iStrPtr End If OldClipBoardPaste = ClipText End If CloseClipboard End Function