Página 1 de 1
Importando Dados de Outra Pasta de Trabalho
Enviado: 19 Fev 2020 às 03:48
por vivianfla
Boa noite!
Estou tentando importar dados de outra pasta de trabalho, cujas linhas e colunas não coincidem.
Inclui a seleção via formulário. Até o momento da seleção dos dados está ok, mas qdo descarrega na planiha, está pulando a primeira coluna.
Gostaria de ajuda para solucionar essa questão.
Envio os arquivos para melhor entendimento.
Obrigada!
Re: Importando Dados de Outra Pasta de Trabalho
Enviado: 19 Fev 2020 às 08:29
por Basole
Confira se é isso que deseja
* Para as colunas G e H nao gravarem como texto, acrescentei uma funcão para inserir como valores (decimais)
Código: Selecionar todosPrivate Sub CommandButton2_Click()
Dim x As Single
Dim i As Integer
Dim j As Integer
'Limpa planilha
Range("B6").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Worksheets("importar").Range("b6:j2000").ClearContents
Range("B5").Select
i = 6
For x = 1 To ListView1.ListItems.Count
If ListView1.ListItems.item(x).Checked = True Then
Cells(i, 2) = ListView1.ListItems(x).Text
'Loop das colunas
For j = 1 To ListView1.ColumnHeaders.Count - 1
If j = 5 Or j = 6 Then
Cells(i, j + 2) = VBA.CDbl(ListView1.ListItems(x).ListSubItems(j).Text)
Else
Cells(i, j + 2) = ListView1.ListItems(x).ListSubItems(j).Text
End If
Next j
i = i + 1
End If
Next x
End Sub
Importando Dados de Outra Pasta de Trabalho
Enviado: 19 Fev 2020 às 23:09
por vivianfla
Não funcionou aqui. Dá erro aqui VBA.CDbl(ListView1.ListItems(x).ListSubItems(j).Text),
Consegui que a importação dos dados viesse ok com essas alterações. Só que apenas com esse arquivo especifico que testei a importação inicialmente.
Código: Selecionar todosPrivate Sub CommandButton2_Click()
Dim x As Single
Dim i As Integer
Dim j As Integer
'Limpa planilha
Range("B6").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Worksheets("importar").Range("b6:j2000").ClearContents
Range("B5").Select
i = 6
For x = 1 To ListView1.ListItems.Count
If ListView1.ListItems.item(x).Checked = True Then
Cells(i, 2) = ListView1.ListItems(x).Text
'Loop das colunas
For j = 1 To ListView1.ColumnHeaders.Count - 1
Cells(i, j + 2) = ListView1.ListItems(x).ListSubItems(j).Text
Next j
i = i + 1
End If
Next x
End Sub
Testei um outro arquivo e só aparece na visuaização dos itens a selecionar as 5 primeiras linhas com dados na planilha. Acho que o problema está aqui.
Código: Selecionar todosPrivate Sub carrega_listview()
Dim lin As Integer
Dim Titulo As Integer
Dim dados As Integer
'Se a listview contiver colunas vai eliminar
ListView1.ColumnHeaders.Clear
Application.ScreenUpdating = False
Plan1.Range("B5").Select
conta_colunas = Cells(2, Columns.Count).End(xlToLeft).Column
'Adiciona nome aos cabeçalhos da lisview
For Titulo = 2 To conta_colunas
With ListView1
.Gridlines = True
.View = lvwReport
.FullRowSelect = True
.ColumnHeaders.Add Text:=Plan1.Cells(5, Titulo)
End With
Next Titulo
ListView1.ListItems.Clear
Plan1.Select
lin = 6
Do Until Plan1.Cells(lin, 6) = ""
Set li = ListView1.ListItems.Add(Text:=Plan1.Cells(lin, 2).Value)
For dados = 3 To conta_colunas
li.ListSubItems.Add Text:=Plan1.Cells(lin, dados).Value
Next dados
lin = lin + 1
Loop
'Limpa planilha
Range("B6").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Cells.Select
' Worksheets("importar").Range("B5:J2000").ClearContents
Range("B5").Select
Application.ScreenUpdating = True
End Sub
Importando Dados de Outra Pasta de Trabalho
Enviado: 20 Fev 2020 às 00:05
por vivianfla
Eu descobri o problema, mas não consegui resolver. Ele está parando o carregamento dos dados nas linhas com células vazias, mas não sei como corrigir, pois não resolve ignorar a linha inteira que tiver um campo vazio, eu preciso que , se tiver algum campo na linha preenchido, ela traga pra lista normalmente, só parar quando toda a linha estiver vazia.
Re: Importando Dados de Outra Pasta de Trabalho
Enviado: 20 Fev 2020 às 15:11
por Basole
Sem o(s) arquivos que esta testando fica dificil uma anlise exata.
De qulquer alterei o codigo que verifica os campos/colunas vazios do listview
Código: Selecionar todosPrivate Sub CommandButton2_Click()
Dim x As Single
Dim i As Integer
Dim j As Integer
'Limpa planilha
Range("B6").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Worksheets("importar").Range("b6:j2000").ClearContents
Range("B5").Select
i = 6
For x = 1 To ListView1.ListItems.Count
If ListView1.ListItems.item(x).Checked = True Then
Cells(i, 2) = ListView1.ListItems(x).Text
'Loop das colunas
For j = 1 To ListView1.ColumnHeaders.Count - 1
If Not ListView1.ListItems(x).ListSubItems(j).Text = VBA.vbNullString Then
If j = 5 Or j = 6 Then
Cells(i, j + 2) = VBA.CDbl(ListView1.ListItems(x).ListSubItems(j).Text)
Else
Cells(i, j + 2) = ListView1.ListItems(x).ListSubItems(j).Text
End If
End If
Next j
i = i + 1
End If
Next x
End Sub
Importando Dados de Outra Pasta de Trabalho
Enviado: 21 Fev 2020 às 00:45
por vivianfla
Boa noite!
O arquivo estava no primeiro post. Eu só alterei esses códigos acima.
Testei com esse código que você colocou, mas continua dando o mesmo problema... Ele carrega algumas linhas e para.
Achei que parasse quando encontrava uma linha com células vazias vazias no intervalo, mas não necessariamente. Ele carrega agumas vazias e de repente para, em algum momento que não consegui identificar.
Tentei alterar a ordem dos conteúdos das linhas, mas ele sempre para em algum momento aleatório, não consegui descobrir nem um padrão.
Estou anexando o arquivo atualizado e a nova base da importação (o que está gerando o erro).
Muito obrigada!!!
Re: Importando Dados de Outra Pasta de Trabalho
Enviado: 08 Mai 2020 às 21:20
por adrieldasbc
Olá, acredito que não precise de VBA para isso.
Usaria facilmente o Power Query, ainda mais se o arquivo for local.