在 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,其中显示了使用这些方法以及与文本框交互的一些其他示例。
我正在尝试对从 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,其中显示了使用这些方法以及与文本框交互的一些其他示例。