Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Copiar dados da ListBox para área de transferência do Windows
Copiar dados da ListBox para área de transferência do Windows
Bom dia pessoal,
Fiz dentro da userform uma listbox que possui duas colunas, ela pega dados de duas colunas da planilha, no caso RowSource = Y1:Z13.
Porem os dados que a listbox traz, ao selecionar os conteudo inteiro (está habilitado o MultiSelect) não consigo copiar para um email por exemplo, pois o ctrl+C nao leva o conteúdo para área de transferência do windows para ser colado em qualquer outro local.
Tem como resolver isso? Agradeço qualquer ajuda.
Fiz dentro da userform uma listbox que possui duas colunas, ela pega dados de duas colunas da planilha, no caso RowSource = Y1:Z13.
Porem os dados que a listbox traz, ao selecionar os conteudo inteiro (está habilitado o MultiSelect) não consigo copiar para um email por exemplo, pois o ctrl+C nao leva o conteúdo para área de transferência do windows para ser colado em qualquer outro local.
Tem como resolver isso? Agradeço qualquer ajuda.
-
- Manda bem
- Mensagens: 173
- Registrado em: Qua Mai 17, 2017 2:27 pm
Re: Copiar dados da ListBox para área de transferência do Windows
Colega
Adapte para sua necessidade.
Private Sub CopiarList()
Dim iCol As Integer
Dim strList As String
Dim i As Integer
Dim MyData As DataObject
For i = 0 To Me.ListBox1.ListCount - 1 'Onde ListBox1 deve ser o nome da sua listbox
If Len(Trim(Me.ListBox1.List(i))) > 0 Then
For iCol = 1 To ListBox1.ColumnCount - 1
strList = strList & Trim(Me.ListBox1.List(i, iCol)) & " "
Next
strList = strList & vbCrLf
End If
Next i
Set MyData = New DataObject
MyData.Clear
MyData.SetText Trim(strList)
MyData.PutInClipboard
End Sub
Créditos https://www.ozgrid.com/forum/forum/help ... -clipboard
Adapte para sua necessidade.
Private Sub CopiarList()
Dim iCol As Integer
Dim strList As String
Dim i As Integer
Dim MyData As DataObject
For i = 0 To Me.ListBox1.ListCount - 1 'Onde ListBox1 deve ser o nome da sua listbox
If Len(Trim(Me.ListBox1.List(i))) > 0 Then
For iCol = 1 To ListBox1.ColumnCount - 1
strList = strList & Trim(Me.ListBox1.List(i, iCol)) & " "
Next
strList = strList & vbCrLf
End If
Next i
Set MyData = New DataObject
MyData.Clear
MyData.SetText Trim(strList)
MyData.PutInClipboard
End Sub
Créditos https://www.ozgrid.com/forum/forum/help ... -clipboard
Re: Copiar dados da ListBox para área de transferência do Windows
Puxa cara não deu certo a minha tentativa de adaptação do código.
O nome da ListBox é ListBox1 como do codigo. Eu fiquei na dúvida em qual evento eu deveria colocar, coloquei no initialize da userforme onde a listbox se encontra, depois coloquei num botao dentro da form. Nao deu certo. São duas colunas q a listbox tem, com varias linhas, ai com esse codigo qdo seleciono todo o texto da listbox, e colo em algum lugar, sai apenas dois quadradinhos, como de caractere desconhecido.
O nome da ListBox é ListBox1 como do codigo. Eu fiquei na dúvida em qual evento eu deveria colocar, coloquei no initialize da userforme onde a listbox se encontra, depois coloquei num botao dentro da form. Nao deu certo. São duas colunas q a listbox tem, com varias linhas, ai com esse codigo qdo seleciono todo o texto da listbox, e colo em algum lugar, sai apenas dois quadradinhos, como de caractere desconhecido.
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Copiar dados da ListBox para área de transferência do Windows
Quero crer que a adaptação não foi efetuada corretamente.
Assim sem acesso ao seu modelo, vamos no achometro:
Alem do nome da listbox e necessario tambem identificar o tipo de "seleção"
a linha --> seleciona linhas não vazias,
acho eu que seja todo o conteudo de sua listbox.
Se quiser conteudo diferente deve rever essa linha
Verifique o inicio do loop "iCol", normalmente listbox inicia contagem do Zero "0"
Se não conseguir disponibilize seu modelo com poucos dados, altere esses dados para fictícios se necessário
Assim sem acesso ao seu modelo, vamos no achometro:
Alem do nome da listbox e necessario tambem identificar o tipo de "seleção"
a linha -->
Código: Selecionar todos
If Len(Trim(Me.ListBox1.List(i))) > 0
acho eu que seja todo o conteudo de sua listbox.
Se quiser conteudo diferente deve rever essa linha
Acho que esses "quadradinhos" são os caracteres de fim de linha e nova linha, indicando que nenhum registro foi "passado"..sai apenas dois quadradinhos...
Verifique o inicio do loop "iCol", normalmente listbox inicia contagem do Zero "0"
Eu particularmente prefiro "ancorar" uma execução a um botão de comando...fiquei na dúvida em qual evento
Se não conseguir disponibilize seu modelo com poucos dados, altere esses dados para fictícios se necessário
Re: Copiar dados da ListBox para área de transferência do Windows
Desculpa cara, acabei não atentando para esse detalhe importante de anexar o arquivo. Anexei agora
- Anexos
-
- MODELO.rar
- Modelo
- (17.49 KiB) Baixado 360 vezes
-
- Manda bem
- Mensagens: 173
- Registrado em: Qua Mai 17, 2017 2:27 pm
Re: Copiar dados da ListBox para área de transferência do Windows
Colega
Segue código que deve ser colocado no evento Click.
Atenciosamente
Tov Elen Shau
Private Sub Copiar_Click()
Dim Lista As String
Dim i As Integer, c As Integer
For i = 0 To Me.ListBox1.ListCount - 1
For c = 0 To Me.ListBox1.ColumnCount - 1
If Len(Trim(Me.ListBox1.List(i, c))) > 0 Then
Lista = Lista & Trim(Me.ListBox1.List(i, c)) & " "
End If
Next c
Lista = Lista & vbCrLf 'Quebra a linha
Next i
Dim MyData As DataObject
Set MyData = New DataObject
MyData.Clear
MyData.SetText Trim(Lista)
MyData.PutInClipboard
End Sub
Segue código que deve ser colocado no evento Click.
Atenciosamente
Tov Elen Shau
Private Sub Copiar_Click()
Dim Lista As String
Dim i As Integer, c As Integer
For i = 0 To Me.ListBox1.ListCount - 1
For c = 0 To Me.ListBox1.ColumnCount - 1
If Len(Trim(Me.ListBox1.List(i, c))) > 0 Then
Lista = Lista & Trim(Me.ListBox1.List(i, c)) & " "
End If
Next c
Lista = Lista & vbCrLf 'Quebra a linha
Next i
Dim MyData As DataObject
Set MyData = New DataObject
MyData.Clear
MyData.SetText Trim(Lista)
MyData.PutInClipboard
End Sub
Re: Copiar dados da ListBox para área de transferência do Windows
Não funcionou não, tanto o arquivo copia_teste postado por Reinaldo quanto o código de Tov Elen.
Em ambos os casos, na userform cliquei em copiar, e ao pressionar Ctrl+V num bloco de notas por exemplo, nao colou nada, e na propria planilha numa célula qualquer, a tentativa resultou em dois quadradinhos como caracter desconhecido com interrogação no meio do quadrado.
Em ambos os casos, na userform cliquei em copiar, e ao pressionar Ctrl+V num bloco de notas por exemplo, nao colou nada, e na propria planilha numa célula qualquer, a tentativa resultou em dois quadradinhos como caracter desconhecido com interrogação no meio do quadrado.
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Copiar dados da ListBox para área de transferência do Windows
Estrtanho. No seu arquivo modelo (Copia_Teste) que postei está funcionando corretamente por aqui.
Tanto no Bloco de notas; no Notepad++; no excel e tambem diretamente no Outlook(2010) o Crtl+V "deposita" exatamente o conteúdo copiado.
Provavelmente algum problema na configuração em seu equipamento
Tanto no Bloco de notas; no Notepad++; no excel e tambem diretamente no Outlook(2010) o Crtl+V "deposita" exatamente o conteúdo copiado.
Provavelmente algum problema na configuração em seu equipamento
-
- Manda bem
- Mensagens: 173
- Registrado em: Qua Mai 17, 2017 2:27 pm
Re: Copiar dados da ListBox para área de transferência do Windows
Erikson
Fiz os teste aqui tanto com o exemplo que o Reinaldo postou quanto o código que postei e em ambos os casos funcionou perfeitamente.
Fiz os teste aqui tanto com o exemplo que o Reinaldo postou quanto o código que postei e em ambos os casos funcionou perfeitamente.