以excel粘贴友好的格式将列表框中的项目添加到剪贴板中

目标:使用VBA(excel)以excel友好格式填充表格(从列表框)到剪贴板,这样我就可以粘贴(ctrl + V)到excel中,并将值分割成正确的列和行他们在原来的列表框中。

问题:我似乎无法得到正确的格式。 当我把我的剪贴板的内容粘贴到Excel中时,每一行都包含在一个单元格(第一列)中,用“,”(这是我试图用作“分隔符”的一种方式) – 不知道这是否正确或不?)

我正在使用API​​解决方法填充剪贴板,我不想用代码阻止你死亡,但这里是最重要的位(我总是感觉 – 问我是否需要看更多的代码)。

Private Sub btnCopyTable_Click() Dim I As Long Dim J As Long Dim tmp As String Dim arrItems() As String Dim clipboard As DataObject ReDim arrItems(0 To lbIPActions.ColumnCount - 1) For J = 0 To lbIPActions.ListCount - 1 For I = 0 To lbIPActions.ColumnCount - 1 On Error Resume Next ' Handles null values arrItems(I) = lbIPActions.Column(I, J) On Error GoTo 0 Next I tmp = tmp & Join(arrItems, ",") & vbCrLf Next J MsgBox tmp ClipBoard_SetData tmp End sub 

当前输出:

 1,1,Low,Controls,,LS,Do this,02-Oct-2015,Note 1,Brev 2,1,Low,Controls,,LS,Do that,02-Oct-2015,Note 2,Brev 

当前状态:我有一个四处看看,并find一种方法来代码到一个特定的工作表,但我的最终用户需要自由复制到许多工作表中,以特别的方式。 我知道总是有右键单击 – >导入文本向导的选项,但如果可能,再次按Ctrl + V是首选的方法。

一如既往,任何帮助/build议表示赞赏,在此先感谢。

分隔你的string与Tab在每一行,它会工作。 像这样:

 Dim I As Long Dim J As Long Dim textItem As String Dim copyText As String Dim clipboard As DataObject For J = 0 To lbIPActions.ListCount - 1 For I = 0 To lbIPActions.ColumnCount - 1 textItem = vbNullString On Error Resume Next ' Handles null values textItem = lbIPActions.Column(I, J) On Error GoTo 0 If I > 0 Then copyText = copyText & vbTab copyText = copyText & textItem Next I If J < lbIPActions.ListCount - 1 Then copyText = copyText & vbNewLine Next J ClipBoard_SetData clipboardText