Vba 使用DataObject.PutInClipboard后粘贴将返回未知字符

Vba 使用DataObject.PutInClipboard后粘贴将返回未知字符,vba,clipboard,Vba,Clipboard,我正在使用以下代码将文本复制到剪贴板,以便用户稍后粘贴: Sub CopyText(ByVal StringToCopy As String) Dim D As DataObject Set D = New DataObject With D .SetText StringToCopy .PutInClipboard End With Set D = Nothing End Sub 它在多台机器上工作了很长一段时间。它在过去

我正在使用以下代码将文本复制到剪贴板,以便用户稍后粘贴:

Sub CopyText(ByVal StringToCopy As String)
    Dim D As DataObject
    Set D = New DataObject
    With D
       .SetText StringToCopy 
       .PutInClipboard
    End With
    Set D = Nothing
End Sub
它在多台机器上工作了很长一段时间。它在过去的几个月里停止了工作。它不返回复制的文本,而是返回两个未知字符,在即时窗格中显示为
,或者如果运行
?Asc(.GetText)
,则返回字符63,这意味着无法识别文本。 字符串在
之后丢失。PutInClipboard

.SetText "Test"
Debug.Print .GetText `returns "Test"
.PutInClipboard
Debug.Print .GetText `returns "??"
唯一的建议是使用API调用,如果可能的话,我不想这样做


编辑:在跟踪msdn中的线程后,如果文件资源管理器处于打开状态,则问题会重现。

是我发现唯一有效的方法。不过,它相当简单,唯一的缺点是它占用了模块中的文本。@jclasley在链接线程的讨论中进一步查看后,似乎只有在文件资源管理器打开时才会显示该问题。这是我发现的唯一有用的东西。不过,它相当简单,唯一的缺点是它占用了模块中的文本。@jclasley在链接线程的讨论中进一步查看后,似乎只有在文件资源管理器打开时才会显示该问题。