depois de penar durante algum tempo cheguei a um veredito
veja o código:
Private Sub Command1_Click()
ComparaTXT "c: este1.txt", "c: este2.txt", "c: este3.txt"
End Sub
Public Function ComparaTXT(OriginalTXT As String, CompararTXT As String, NovoTXT As String)
Dim Arq1 As Integer
Dim Arq2 As Integer
Dim Arq3 As Integer
Dim Texto(5) As String
Dim OrigLine As String ' Linha Original
Dim CompLine As String ' Linha de Comparação
Arq2 = FreeFile
Open CompararTXT For Input As #Arq2 ' abre o segundo arquivo
Arq3 = FreeFile
Open NovoTXT For Output As #Arq3 ' abre o novo arquivo a ser salvo
Do While Not EOF(Arq2) 'Inicia o Loop no arquivo a se comparar
Line Input #Arq2, CompLine ' grava a linha em Compline - linha de comparação
Arq1 = FreeFile
Open OriginalTXT For Input As #Arq1 'Abre o arquivo original que servira de base para consulta
Do While Not EOF(Arq1) ' inicia um novo Loop dentro do primeiro Loop
Line Input #Arq1, OrigLine ' grava a linha em OrigLine - linha de Origem
' supondo que o arquivo original seja:
' ---------------------------------------------------------------------
' 1111111111111111207EMP11/09/2007
'----------------------------------------------------------------------
' a função abaixo irá separa-lo da seguinte forma
'
' texto(0) tira as barras ficando a string assim
'
' 1111111111111111207EMP11092007
'
' texto(1)= 1111111111111111
' texto(2)= 207
' texto(3)= EMP
' texto(4)= 10092007
Texto(0) = Replace(OrigLine, "/", "")
Texto(1) = Mid(Texto(0), 1, 16)
Texto(2) = Mid(Texto(0), 17, 3)
Texto(3) = Mid(Texto(0), 20, 3)
Texto(4) = Mid(Texto(0), 23, Len(Texto(0)))
' agora é feito a seguinte verificação
' se a ocorrência for encontrada no arquivo a se comparar
' então grava o resultado no arquivo 3
'
' ex: no arquivo a se comparar a ocorrência existe
' 001EMP207500100001100100634370000010
' ||||||
' 000110920071111111111111111613081998
' ||||||||||||||||||||||||
If InStr(1, CompLine, Texto(1)) <> 0 And _
InStr(1, CompLine, Texto(2)) <> 0 And _
InStr(1, CompLine, Texto(3)) <> 0 And _
InStr(1, CompLine, Texto(4)) <> 0 Then
Print #Arq3, CompLine ' grava somente o que for encontrado no arquivo 3
End If
Loop
Close #Arq1
Loop
Close #Arq2
Close #Arq3
End Function