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
Pergunta
Zow
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:
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.