在VB或VBA中,如何调用API复制文本到剪贴板
在VBA中经常使用以下语句,来复制文本到剪贴板,但有时会出错。
Dim MyData As New DataObject MyData.SetText sData, 1 MyData.PutInClipboard
为了复制文本到剪贴板更加稳定,应该调用API来处理:
'复制文本到剪贴板
Public Sub CopyTextToClip(sData As String) If CBool(OpenClipboard(0)) Then
Dim hMemHandle As Long, lpData As Long
hMemHandle = GlobalAlloc(0, LenB(sData) + 2)
If CBool(hMemHandle) Then
lpData = GlobalLock(hMemHandle) If lpData <> 0 Then
CopyMemory ByVal lpData, ByVal sData, LenB(sData) GlobalUnlock hMemHandle EmptyClipboard
SetClipboardData CF_TEXT, hMemHandle End If End If
Call CloseClipboard End If End Sub