Вставка после использования DataObject.PutInClipboard возвращает неизвестные символы - PullRequest
0 голосов
/ 24 января 2020

Я использую следующий код, чтобы скопировать текст в буфер обмена для последующей вставки пользователем:

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

На нескольких машинах он долго работал нормально. Он перестал работать в последние несколько месяцев. Вместо того, чтобы возвращать скопированный текст, он возвращает два неизвестных символа, которые отображаются как ?? в непосредственной панели, или символ 63, если я запускаю ?Asc(.GetText), что в соответствии с этот ответ означает, что текст не распознается. Строка теряется после .PutInClipboard:

.SetText "Test"
Debug.Print .GetText `returns "Test"
.PutInClipboard
Debug.Print .GetText `returns "??"

Единственное найденное мной решение предлагает использовать вызовы API, чего я бы не хотел делать, если это возможно.

Редактировать: после отслеживания потока из msdn появляется сообщение о том, что проблема воспроизводится, если открыт Проводник.

...