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在链接线程的讨论中进一步查看后,似乎只有在文件资源管理器打开时才会显示该问题。