Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Copiar dados da ListBox para área de transferência do Windows

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Erikson
Colaborador
Colaborador
Mensagens: 80
Registrado em: Dom Ago 28, 2011 7:49 pm

Copiar dados da ListBox para área de transferência do Windows

Mensagem por Erikson »

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.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Tov Elen Shau
Manda bem
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

Mensagem por Tov Elen Shau »

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


Erikson
Colaborador
Colaborador
Mensagens: 80
Registrado em: Dom Ago 28, 2011 7:49 pm

Re: Copiar dados da ListBox para área de transferência do Windows

Mensagem por Erikson »

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.


Avatar do usuário
Reinaldo
Jedi
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

Mensagem por Reinaldo »

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 -->

Código: Selecionar todos

If Len(Trim(Me.ListBox1.List(i))) > 0
seleciona linhas não vazias,
acho eu que seja todo o conteudo de sua listbox.
Se quiser conteudo diferente deve rever essa linha
..sai apenas dois quadradinhos...
Acho que esses "quadradinhos" são os caracteres de fim de linha e nova linha, indicando que nenhum registro foi "passado"
Verifique o inicio do loop "iCol", normalmente listbox inicia contagem do Zero "0"
...fiquei na dúvida em qual evento
Eu particularmente prefiro "ancorar" uma execução a um botão de comando

Se não conseguir disponibilize seu modelo com poucos dados, altere esses dados para fictícios se necessário


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Erikson
Colaborador
Colaborador
Mensagens: 80
Registrado em: Dom Ago 28, 2011 7:49 pm

Re: Copiar dados da ListBox para área de transferência do Windows

Mensagem por Erikson »

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


Avatar do usuário
Reinaldo
Jedi
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

Mensagem por Reinaldo »

Experimente:
Cópia_teste.zip
(17.34 KiB) Baixado 463 vezes


Tov Elen Shau
Manda bem
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

Mensagem por Tov Elen Shau »

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


Erikson
Colaborador
Colaborador
Mensagens: 80
Registrado em: Dom Ago 28, 2011 7:49 pm

Re: Copiar dados da ListBox para área de transferência do Windows

Mensagem por Erikson »

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.


Avatar do usuário
Reinaldo
Jedi
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

Mensagem por Reinaldo »

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


Tov Elen Shau
Manda bem
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

Mensagem por Tov Elen Shau »

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.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder