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

[RESOLVIDO] ListView com CheckBox

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
NayanaE
Colaborador
Colaborador
Mensagens: 19
Registrado em: Sex Jan 05, 2018 3:13 pm
Localização: Rio de Janeiro, RJ

[RESOLVIDO] ListView com CheckBox

Mensagem por NayanaE »

Bom dia!!

Pessoal, preciso de ajuda.

Fiz uma ListView com checkbox, e lá são listadas as worksheets de um arquivo que quero extrair os dados.
Ao selecionar as worksheets na ListView, o código só copia/extrai a primeira worksheet e não o resto selecionado.
Já tentei "guia_selecionada = ListView1.ListItems.Item(i).Selected" e não funciona..


Queria também saber por curiosidade, se tem como copiar worksheet com o mesmo nome, de workbooks diferentes.(isso é uma outra parte do código).

Código: Selecionar todos

Private Sub CommandButton2_Click()

Application.ScreenUpdating = False

i = 1
For i = 1 To ListView1.ListItems.Count

    If ListView1.ListItems.Item(i).Checked = True Then
    guia_selecionada = ListView1.ListItems.Item(i)
    End If
i = i + 1
Next i
  
Dim Arquivo_atual As Workbook
Dim Arquivo_importacao As Workbook
Dim Guia As Worksheet

Set Arquivo_atual = ActiveWorkbook

'Abre o arquivo excel da planilha que você quer importar os dados
Set Arquivo_importacao = Workbooks.Open(Filename:=form_importa.txt_arquivo)

' (Copia apenas a primeira worksheet selecionada na listview , quando: guia_selecionada = ListView1.ListItems.Item(i) )
For Each Guia In Arquivo_importacao.Worksheets
     If Guia.Name = guia_selecionada Then
      Guia.Copy After:=Arquivo_atual.Worksheets(Arquivo_atual.Worksheets.Count)
     End If
   Next Guia
                              
    Arquivo_importacao.Close
    Unload Me
    
    MsgBox ("Guia(s) " & guia_selecionada & " atualizada(s) com sucesso!"), vbInformation
    
Application.ScreenUpdating = True

End Sub
Editado pela última vez por NayanaE em Qua Jan 31, 2018 8:46 am, em um total de 1 vez.


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.


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: ListView com CheckBox

Mensagem por srobles »

NayanaE,

Sem ter seu arquivo para analisar a estrutura, fica difícil poder ajudar.

Todavia, fiz um modelo (com código comentado) que deixo em anexo para análise.

Abs
Anexos
modelo_NayanaE.zip
(17.66 KiB) Baixado 404 vezes


NayanaE
Colaborador
Colaborador
Mensagens: 19
Registrado em: Sex Jan 05, 2018 3:13 pm
Localização: Rio de Janeiro, RJ

Re: ListView com CheckBox

Mensagem por NayanaE »

Testei o seu arquivo no meu e não funcionou não.

Vou passar os arquivos para facilitar.
Eu importo qualquer arquivo excel e desse arquivo são listadas as worksheets no listview, so que so abre UM arquivo selecionado. (Sempre o último selecionado). (Preciso de ajuda aqui)!!
ListView_NayanaE.zip
(38.43 KiB) Baixado 263 vezes


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: ListView com CheckBox

Mensagem por srobles »

NayanaE,

Veja se as alterações feitas no seu modelo, atende sua necessidade.

Abs
Anexos
ListView_NayanaE.zip
(34.92 KiB) Baixado 400 vezes


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.


NayanaE
Colaborador
Colaborador
Mensagens: 19
Registrado em: Sex Jan 05, 2018 3:13 pm
Localização: Rio de Janeiro, RJ

Re: ListView com CheckBox

Mensagem por NayanaE »

Nossa, muito obrigada srobles!!!! Parabéns, e tava bem detalhado!
Ajudou bastante!!!

Mas se eu quisesse copiar os dados (Todas as células, e não células especificas pq o VBA trava mt qnd faz isso), das worksheets selecionadas. Seria tipo um "Copiar Worksheets com Critérios".

Por exemplo:
Abri a Planilha Atualizar Abas, apertei o botão de procurar o arquivo para extração, e selecionei a Planilha Dados, as abas (worksheets) Soma, Soma2 são listadas na ListView e selecionadas, e ao apertar “atualizar”, atualizaria as worksheets Soma e Soma2 da Planilha Atualizar Abas.
Não é para duplicar,no arquivo ficou Soma, Soma2, Soma(1), Soma2(1)..

Seria um critério de copiar as worksheets com nomes iguais de workbook diferente. Estou a 1 mês e meio tentando fazer isso, mas não consigo.


OBS) Mas desde já agradeço! Ajudou bastante o código!
Anexos
ListView_NayanaE - part2.zip
(45.66 KiB) Baixado 265 vezes


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: ListView com CheckBox

Mensagem por srobles »

NayanaE,

Para o que você pretende, realmente fica mais complexo e consequentemente, leva mais tempo para o Excel executar a rotina. Isso é normal.

Apenas me esclareça : você pretende copiar os dados da Pasta de Origem para o Pasta Atualizar Abas apenas se as planilhas corresponderem ás que existirem na Atualizar Abas, correto?

Abs


NayanaE
Colaborador
Colaborador
Mensagens: 19
Registrado em: Sex Jan 05, 2018 3:13 pm
Localização: Rio de Janeiro, RJ

Re: ListView com CheckBox

Mensagem por NayanaE »

Leva tempo mesmo, e não tem quase ninguém para me ajudar! Estou estudando todos os dias e pedindo ajuda nos fóruns.

Sim, exatamente isso!! Copiar os dados das worksheets da planilha "dados", e colar esses dados nas worksheets que tiverem o mesmo nome da planilha "Atualizar Abas".

Falo copiar mas a ideia é pra atualizar os dados, sabe? Pois todo mês recebo varias planilhas e consolido.
Essas planilhas "atualizar dados" e "dados" são apenas testes. Das planilhas reais, sabe?

Vou tentar esclarecer melhor, com outro exemplo:
(utilizando os mesmos códigos + o seu código tb)

Tenho uma planilha A (workbook), com 12 abas (12 worksheets).Esta é uma planilha consolidada.

Planilha A (worksheets): Adm1, Adm2, Adm3, B1, B2, B3, C1, C2, C3, D1, D2 e D3.
Planilha B: B1, B2 e B3

Todo mês, pessoas preenchem arquivos (Planilha B, C e D), e depois eu junto as informações na planilha A. O arquivo planilha A guarda os dados de todos os meses do ano, ou seja, vou acrescentando os dados do mês. As pessoas não preenchem sempre as mesmas células não. (Isso que me complica e me confunde tb).
Pensei na possibilidade de smp usar "Cells.Select - Seletion.Copy" de cada aba na hora do loop mas acho que trava.
Anexos
Planilhas A e B.zip
(81.42 KiB) Baixado 221 vezes


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: ListView com CheckBox

Mensagem por srobles »

NayanaE,

Para que possamos nos aproximar da sua real intenção com essas planilhas, sem conhecermos seu cenário, fica difícil elaborar e te apresentar algo mais concreto.
Note que para o que você precisa, seria um jogo de paciência esperar as rotinas serem executadas, pois, nas planilhas A, B, C, existem espaços para dividir os meses de lançamento, o que por sua vez, dificulta na criação de uma rotina que execute rápido e atenda sua demanda.

Tente explicar, qual o seu cenário atual e o que pretende alcançar, por exemplo :

Porquê a necessidade de planilhas A, B, C , D etc ?
Quais os critérios para obrigatoriamente forçarmos os demais usuários á preencher determinada planilha?
Porquê preencher a planilha A, ou a B, ou melhor, porquê determinado valor tem de ser adicionado á planilha A e não á planilha B?

Não seria mais prático termos uma planilha onde os usuários apenas adicionam um novo item, e o restante a planilha faz? Por exemplo, o usuário adiciona um novo item sem ter de selecionar determinada planilha, e ao concluir o preenchimento, a macro ou rotina determina em qual planilha lançar? Seria mais ou menos como ter uma planilha "quase" consolidada...Ela teria o registro de todos lançamentos feitos, onde teríamos os campos que você quiser, e com muitas funções para detalhamento do registro, como data, hora, usuário....etc

Creio que assim, fica mais fácil e prático em ambos os lados, pois depois, você apenas desenvolve a rotina de extração e consolidação dos dados na planilha de uso diário.

Abs


NayanaE
Colaborador
Colaborador
Mensagens: 19
Registrado em: Sex Jan 05, 2018 3:13 pm
Localização: Rio de Janeiro, RJ

Re: ListView com CheckBox

Mensagem por NayanaE »

Oi Saulo, eu já pensei nesta possibilidade de enviar planilhas onde os usuários preencham sempre a mesma células todo mês, mas não dá, pois eles tem que ter acesso aos históricos dos outros meses. Entende?

Por isso, que sempre penso nos comandos "Cells.Select" , "Selection.Copy" e "Selection.PasteSpecial" para cada aba que for selecionada no listview e coladas na planilha A, pois caso algum usuário modifique algum histórico, a macro copiei tudo tb.
Sei que estou com uma missão bem difícil. :(


NayanaE
Colaborador
Colaborador
Mensagens: 19
Registrado em: Sex Jan 05, 2018 3:13 pm
Localização: Rio de Janeiro, RJ

Re: ListView com CheckBox

Mensagem por NayanaE »

Olá pessoal, estou passando aqui para enviar o arquivo que finalmente consegui terminar o código!!!! :D Então, caso alguém tenha futuramente um problema similar, é só baixar o arquivo e vê se o código solucionará o problema de vocês!!

Obrigada a todos que também tentaram me ajudar de alguma forma! ;) ;)

Att,
Nayana Encarnação.
Anexos
Planilha A - Finalizada.zip
(84.54 KiB) Baixado 403 vezes


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