Hacer un Copy/Paste directamente a un ListBox
Se puede y cómo debería hacerlo para hacer un copy paste directamente a un ListBox? y/o como puedo controlar los datos de las celdas del excel en visual?
Bien... mira, no se si entendi muy bien lo que quieres hacer, pero aqui tengo un codigo que le hice a alguien que (creo) solicito algo parecido en otro foro...
El codigo sirve para copiar desde un ListBox al portapapeles y/o traer el contenido del portapapeles hasta otro ListBox... tomando como separador un retorno de carro (que puede ser modificado para cuanquier otro simbolo que se desee como separador)...
Para probarlo crea un proyecto nuevo... insertale dos controles ListBox y dos controles CommandButton... copea el siguiente codigo y pegalo en la seccion (General) (Declaraciones) del formulario... ejecutalo...
Option Explicit
Private Sub Command1_Click()
Dim ContenidoList As String
Dim I As Integer
For I = 0 To List1.ListCount - 1
If I = 0 Then
ContenidoList = List1.List(I)
Else
ContenidoList = ContenidoList & vbCrLf & List1.List(I)
End If
Next
Clipboard.Clear 'Limpiar de basura el contenido del portapapeles
Clipboard.SetText ContenidoList 'Enviar cadenas a portapapeles
End Sub
Private Sub Command2_Click()
Dim ContenidoPortapapeles As String
Dim Inicial As Integer
Dim Final As Integer
If Clipboard.GetFormat(vbCFText) = False Then
MsgBox "El portapapeles no tiene texto"
Exit Sub
End If
ContenidoPortapapeles = Clipboard.GetText()
List2.Clear 'Limpiar el List2
Inicial = 1
Do While Inicial > 0
Final = InStr(Inicial, ContenidoPortapapeles, vbCrLf, 1)
If Final < Inicial Then
List2.AddItem Mid(ContenidoPortapapeles, Inicial)
Inicial = 0
Else
List2.AddItem Mid(ContenidoPortapapeles, Inicial, Final - Inicial) '
Inicial = Final + 2
End If
Loop
End Sub
Private Sub Form_Load()
List1.AddItem "10 Elemento "
List1.AddItem "-20 Elemento"
List1.AddItem "30 Elemento"
List1.AddItem "40 Elemento"
List1.AddItem "5 Elemento"
List1.AddItem "6 Elemento"
List1.AddItem "7 Elemento"
List1.ListIndex = 0
Command1.Caption = "Copiar a portapapeles"
Command1.Width = Command1.Width * 2
Command2.Caption = "Traer del portapapeles"
Command2.Width = Command2.Width * 2
End Sub
Si tienes conflicto con el codigo me puedes solicitar el proyecto con el form y controles incluidos comprimidos en un zip a mi direccion de correo... que es [email protected] o puedes solicitarlo en mi foro (ya que alli si se pueden adjuntar archvios en los post) que esta en:
http://programador.foro.st/
Hasta pronto...
El codigo sirve para copiar desde un ListBox al portapapeles y/o traer el contenido del portapapeles hasta otro ListBox... tomando como separador un retorno de carro (que puede ser modificado para cuanquier otro simbolo que se desee como separador)...
Para probarlo crea un proyecto nuevo... insertale dos controles ListBox y dos controles CommandButton... copea el siguiente codigo y pegalo en la seccion (General) (Declaraciones) del formulario... ejecutalo...
Option Explicit
Private Sub Command1_Click()
Dim ContenidoList As String
Dim I As Integer
For I = 0 To List1.ListCount - 1
If I = 0 Then
ContenidoList = List1.List(I)
Else
ContenidoList = ContenidoList & vbCrLf & List1.List(I)
End If
Next
Clipboard.Clear 'Limpiar de basura el contenido del portapapeles
Clipboard.SetText ContenidoList 'Enviar cadenas a portapapeles
End Sub
Private Sub Command2_Click()
Dim ContenidoPortapapeles As String
Dim Inicial As Integer
Dim Final As Integer
If Clipboard.GetFormat(vbCFText) = False Then
MsgBox "El portapapeles no tiene texto"
Exit Sub
End If
ContenidoPortapapeles = Clipboard.GetText()
List2.Clear 'Limpiar el List2
Inicial = 1
Do While Inicial > 0
Final = InStr(Inicial, ContenidoPortapapeles, vbCrLf, 1)
If Final < Inicial Then
List2.AddItem Mid(ContenidoPortapapeles, Inicial)
Inicial = 0
Else
List2.AddItem Mid(ContenidoPortapapeles, Inicial, Final - Inicial) '
Inicial = Final + 2
End If
Loop
End Sub
Private Sub Form_Load()
List1.AddItem "10 Elemento "
List1.AddItem "-20 Elemento"
List1.AddItem "30 Elemento"
List1.AddItem "40 Elemento"
List1.AddItem "5 Elemento"
List1.AddItem "6 Elemento"
List1.AddItem "7 Elemento"
List1.ListIndex = 0
Command1.Caption = "Copiar a portapapeles"
Command1.Width = Command1.Width * 2
Command2.Caption = "Traer del portapapeles"
Command2.Width = Command2.Width * 2
End Sub
Si tienes conflicto con el codigo me puedes solicitar el proyecto con el form y controles incluidos comprimidos en un zip a mi direccion de correo... que es [email protected] o puedes solicitarlo en mi foro (ya que alli si se pueden adjuntar archvios en los post) que esta en:
http://programador.foro.st/
Hasta pronto...
