我通过电子邮件收到一张桌子。 然后,我复制该表,并希望使用VBA使用MS Excel在列表框中填充数据。 但是,当我使用GetText方法时,找不到列定界符。我本来期望Tab,因为这是将表粘贴到notepad ++中时看到的。 相反,我在列之间得到2或3个空格。 知道如何分隔剪贴板中的列吗?
答案 0 :(得分:0)
首先在vbNewline上拆分,然后在vbTab上每行然后进行创建,以在内存中创建一个数组,最后使用Index检索列。 (但首先将其放在列表框(内存)中,然后将其移出对我来说看起来更容易)
Private Sub CommandButton1_Click()
Dim DataObj As MsForms.DataObject
Set DataObj = New MsForms.DataObject
Dim mytxt As String, arr() As String
Dim ff() As String, qq() As String, i As Integer, j As Long
DataObj.GetFromClipboard
mytxt = DataObj.GetText(1)
arr() = Split(mytxt, vbNewLine)
ReDim ff(1 To UBound(arr), 1 To UBound(Split(arr(0), vbTab)) + 1)
For i = 1 To UBound(arr)
qq = Split(arr(i - 1), vbTab)
For j = 1 To UBound(qq) + 1
ff(i, j) = qq(j - 1)
Next j
Next
ListBox2.List = Application.Index(ff, 0, 2) '2nd column
End Sub