在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