Таблицы хранятся в буфере обмена - PullRequest
1 голос
/ 07 июня 2019

Я получаю таблицу по электронной почте. Затем я копирую таблицу и хочу использовать VBA для заполнения данных в поле списка с помощью MS Excel. Однако, когда я использую метод GetText, я не могу найти разделитель столбцов. Я бы ожидал Tab, поскольку это то, что я вижу, когда вставляю таблицу в notepad ++. Вместо этого я получаю 2 или 3 пробела между столбцами. Есть идеи, как разделить столбцы в буфере обмена?

1 Ответ

0 голосов
/ 07 июня 2019

Сначала разбейте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...