在 GetText 之后从 VBA DataObject 对象中获取字符串

Get String from VBA DataObject object after GetText

我正在尝试对从 UserForm Excel Visual Basic VBA 中的文本框接收到的文本数据进行一些字符串操作(trim 和拆分)。但是我无法获取存储在 Microsoft Form 2.0 DataObject 中的用户剪贴板中获取的字符串/文本数据。

我试过了 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的Variant Type为0,是一个对象。我希望它是一个字符串。

如果您使用早期绑定,您可以在对象浏览器中看到这些方法。

以下是将内容放入剪贴板并从中读取的一些示例。

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 的价值,以及示例的 link,其中显示了使用这些方法以及与文本框交互的一些其他示例。