Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida - Comparar 2 arquivos texto e criar uma planilha


Zow

Pergunta

Fala pessoal! Estou voltando a estudar programação, tem uns 6 anos que não pratico nada então preciso da ajuda de vocês para reaprender e recuperar o tempo perdido:

Bom, estou fazendo uma planilha que compara dois arquivos texto, vou colocar só uma parte porque são mt grandes.

Arquivo1:

ABCB4 |12

ABCB4F |12,05

ABCP11 |8,15

AEDU3 |33,78

AEDU3F |33,8

AEDUA37 |2,12

AEDUM32 |1,61

AELP3 |46,75

Arquivo2:

ABCB4 |12,14

ABCB4F |12,16

AEDU3 |32,83

AEDU3F |32,62

AEDU3T |33,04

AELP3 |46

AELP3F |42,58

AELP3T |46,84

AFLT3 |4

AGEN11 |1,19

Com esses 2 arquivos eu quero fazer uma planilha que faz o seguinte:

Na coluna 1 => Os nomes (Letras)

Na coluna 2 => Os valores referente a cada nome da coluna 1

Na coluna 3 => Os valores referente a cada nome da coluna 1

Notem que há códigos no arquivo1 diferentes do arquivo2, além disso a linha que um nome fica no arquivo1 é diferente da linha que o mesmo nome fica no arquivo2

Minhas dificuldades nesse caso são :

Como fazer com que a macro compare o nome de cada arquivo com todos os nomes do outro arquivo e quando achar um igual coloque na coluna referida, mas se não achar um igual ela insere na 1ª coluna o nome e na outra coluna referida o seu valor?

Por exemplo, executando a macro com os arquivos descritos eu preciso ter uma tabela assim:

COLUNA1 |COL2 |COL3

ABCB4 |12 |12,14

ABCB4F |12,05 |12,16

ABCP11 |8,15 |0

AEDU3 |33,78 |32,83

AEDU3F |33,8 |32,62

AEDU3T |0 |33,04

AEDUA37 |2,12 |0

AEDUM32 |1,61 |0

AELP3 |46,75 |46

AELP3F |0 |42,58

AELP3T |0 |46,84

AFLT3 |0 |4

AGEN11 |0 |1,19

Quando o valor é 0 (zero) é porque o nome não existe no outro arquivo.

Bom o que consegui foi isso, mas só deu certo pras linhas que eram iguais:

Option Explicit

Public Sub LeArquivoTexto()
    'Variáveis para uso no loop
    Dim Arquivo1 As Integer
    Dim CaminhoArquivo1 As String
    Dim TextoArquivo1 As String
    Dim TextoProximaLinha1 As String
    Dim Arquivo2 As Integer
    Dim CaminhoArquivo2 As String
    Dim TextoArquivo2 As String
    Dim TextoProximaLinha2 As String
    Dim ContadorLinha As Long
        
    'Declaração das variáveis segundo layout bovespa
    Dim CODIGO1 As String
    Dim CODIGO2 As String
     
    'Configura a leitura do arquivo
    Arquivo1 = FreeFile
    CaminhoArquivo1 = "C:\StOcKs\MACROS\PREAB\" & InputBox("Digite o nome do Arquivo1:", "Nome:") & ".txt"
    
    'Abre o arquivo para leitura
    Open CaminhoArquivo1 For Input As Arquivo1
    ContadorLinha = 1
    'Lê o conteúdo do arquivo linha a linha
    Do While Not EOF(Arquivo1)
        Line Input #Arquivo1, TextoProximaLinha1
        TextoProximaLinha1 = TextoProximaLinha1 & vbCrLf
        TextoArquivo1 = TextoArquivo1 & TextoProximaLinha1
                    
        'Armazenando as informações de cada linha do texto nas poições relativas
        
        CODIGO1 = Mid(TextoProximaLinha1, 1, 12)
               
       'Preenchendo a tabela
       Cells(ContadorLinha, 1).Value = CODIGO1
       Cells(ContadorLinha, 2).Value = Mid(TextoProximaLinha1, 13, 5)
       
        
        ContadorLinha = ContadorLinha + 1
    Loop
        
        
    'Coloca na janela de verificação imediata
    Debug.Print TextoArquivo1

    'Fecha o arquivo
    Close Arquivo1
    
    'Configura a leitura do arquivo
    Arquivo2 = FreeFile
    CaminhoArquivo2 = "C:\StOcKs\MACROS\PREAB\" & InputBox("Digite o nome do Arquivo2:", "Nome:") & ".txt"

    'Abre o arquivo para leitura
    Open CaminhoArquivo2 For Input As Arquivo2
    ContadorLinha = 1
    'Lê o conteúdo do arquivo linha a linha
    Do While Not EOF(Arquivo2)
           
        Line Input #Arquivo2, TextoProximaLinha2
        TextoProximaLinha2 = TextoProximaLinha2 & vbCrLf
        TextoArquivo2 = TextoArquivo2 & TextoProximaLinha2
        
        'Armazenando as informações de cada linha do texto nas poições relativas
        
        CODIGO2 = Mid(TextoProximaLinha2, 1, 12)
                
       'Preenchendo a tabela
       If CODIGO2 = Cells(ContadorLinha, 1).Value Then
       Cells(ContadorLinha, 3).Value = Mid(TextoProximaLinha2, 13, 5)
      
      End If
        
        ContadorLinha = ContadorLinha + 1
    Loop
     
    
    'Fecha o arquivo
    Close Arquivo2
     
End Sub

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...