Jump to content
Fórum Script Brasil
  • 0

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


Zow

Question

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 to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...