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 todos
Private 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 todos
Private 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 todos
Private 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 todos
Private 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.