Получить строку из объекта VBA DataObject после GetText - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь выполнить некоторые операции со строками (обрезать и разделить) с помощью текстовых данных, полученных из TextBox в VBA UserForm Excel Visual Basic VBA.Но я не могу получить данные String / text, полученные из буфера обмена пользователя, которые хранятся в объекте данных Microsoft Form 2.0.

Я пытался Dim s As String = CType(strPaste, String), но там указано ожидаемое завершение оператора.

Если я только делаю s = CType(strPaste, String), то это синтаксическая ошибка.

Я также изучил документацию Microsoft Forms, но нет списка методов, связанных с DataObject.

Это то, что у меня есть.

Dim dataObj As MSForms.DataObject
Set dataObj = New MSForms.DataObject
dataObj.GetFromClipboard
strPaste = dataObj.GetText()

Тип варианта strPaste равен 0, что является объектом.Я бы хотел, чтобы это была строка.

1 Ответ

1 голос
/ 11 мая 2019

Если вы используете раннее связывание, вы можете увидеть методы в Обозревателе объектов.

Вот несколько примеров помещения чего-либо в буфер обмена и чтения из него.

Option Explicit
Sub foo()
    Dim dataObj As MSForms.DataObject
    Dim getStr As String
    Const putStr As String = "This went to the clipboard"

    Set dataObj = New MSForms.DataObject
    dataObj.SetText putStr
    dataObj.PutInClipboard

    dataObj.GetFromClipboard
    getStr = dataObj.GetText

    MsgBox getStr
End Sub

И что-то, помещенное в буфер обмена обычной операцией копирования:

Sub foo2()
    Dim dataObj As MSForms.DataObject
    Dim R As Range
    Dim getStr As String

Set R = Cells(1, 1)
With R
    .Value = "abcxyz^123"
    .Copy
End With

Set dataObj = New MSForms.DataObject

dataObj.GetFromClipboard
getStr = dataObj.GetText

MsgBox getStr
End Sub

Вы также можете найти значение Microsoft Forms Reference , а также ссылку на Примеры, в которой приведены некоторые другие примеры использования этих методов и взаимодействия с текстовым полем.

...