копирование списка в буфер обмена - PullRequest
0 голосов
/ 28 апреля 2020

В моей пользовательской форме пользователь выбирает какую-то опцию, и когда он проигрывает cmd, мой список показывает результаты.

Теперь мне нужно скопировать данные списка в буфер обмена, и с этим кодом я могу это сделать!

Private Sub BtnCopy_Click()
Dim iCol As Integer
Dim strList As String
Dim i As Integer
Dim MyData As DataObject

For i = 0 To Me.lbResult.ListCount - 1
    If Len(Trim(Me.lbResult.List(i))) > 0 Then ' blank values excluded here
       For iCol = 0 To lbResult.ColumnCount - 1
           strList = strList & Trim(FrmPrice.lbResult2.List(i, iCol)) & vbTab
       Next
       strList = strList & vbCrLf
    End If
Next i


Set MyData = New DataObject
MyData.Clear
MyData.SetText strList
MyData.PutInClipboard
End Sub

Правильно, но когда я вставляю данные (в основную почту), это результат

Pays    City    Cap Q.li    €_STD   €_NEW   Delta   
DE  ACHERN/BADER    DE_77   11  179,85  284,85  105 

Моя цель будет заключаться в том, чтобы текст был похож на столбцы this:

Pays    City            Cap     Q.li    €_STD   €_NEW   Delta   
DE      ACHERN/BADER    DE_77   11      179,85  284,85  105 

Есть один способ скопировать / извлечь данные из списка, сохраняя пространство столбцов?

Я пробовал также этот обходной путь, когда я подготавливаю данные для списка, я "устанавливаю" длина

Private Sub btnEval_Click()

Dim tax As Long, qle As Double, spe As Double
Dim oupt(0 To 1, 0 To 6)

    Me.lbResult.Clear

oupt(0, 0) = "Pays"                         'filed lenght 4
oupt(0, 1) = "City" & String(16, " ")       'filed lenght 20
oupt(0, 2) = "Cap" & String(3, " ")         'filed lenght 6
oupt(0, 3) = "Q.li" & String(4, " ")         'filed lenght 8
oupt(0, 4) = "€_STD" & String(3, " ")         'filed lenght 8
oupt(0, 5) = "€_NEW" & String(3, " ")         'filed lenght 8
oupt(0, 6) = "Delta" & String(3, " ")         'filed lenght 8

oupt(1, 0) = cbCountry.List(cbCountry.ListIndex, 0) & String(Application.Min(4, Len(oupt(1, 0))), " ")
oupt(1, 1) = cbCity.List(cbCity.ListIndex, 0) & String(Application.Min(20, Len(oupt(1, 1))), " ")
oupt(1, 2) = cbCap.List(cbCap.ListIndex, 1) & String(Application.Min(6, Len(oupt(1, 2))), " ")
oupt(1, 3) = tax / 100 & String(Application.Min(8, Len(oupt(1, 3))), " ")
oupt(1, 4) = Application.Max(qle, spe) & String(Application.Min(8, Len(oupt(1, 4))), " ")
oupt(1, 5) = Round(Me.NewPrice2 * 1.055, 2) & String(Application.Min(8, Len(Application.Min(1, 5))), " ")
oupt(1, 6) = Round(Me.NewPrice2 * 1.055, 2) - Application.Max(qle, spe) & String(Application.Min(8, Len(oupt(1, 6))), " ")

    AddItemLb2 (oupt)

errorHandler:

End Sub

Private Sub AddItemLb(ByVal arr)
    With lbResult
        .Clear
           .AddItem
           .List = arr
        .ListIndex = -1
    End With
End Sub

Но это не правильный путь, результат не меняется.

Pays    City    Cap Q.li    €_STD   €_NEW   Delta   
DE  ACHERN/BADER    DE_77   11  179,85  284,85  105 

Спасибо за любые предложения

fabrizio

...