Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
#52412
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!
Você não está autorizado a ver ou baixar esse anexo.
#52415
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
#52444
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
#52445
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.
#52468
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
#52475
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!!!
Você não está autorizado a ver ou baixar esse anexo.
elianebacchini agradeceu por isso
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord