Só para dar uma explicação para quem acompanha este blog diariamente, ontem eu não pude realizar um post porque a minha internet estava fora.
Seguindo a linha dos posts de leitura e gravação de arquivos texto que eu estou fazendo, este é pra solucionar o problema de um amigo da comunidade Microsoft Excel que queria preencher a coluna B com uma lista de valores dividida em vários arquivos Txt.
Por exemplo na coluna A1 = 144, retornar a informação da linha 144 do arquivo que estiver sendo lido, sendo que se quiser retornar a linha 1545 e no arquivo 1 só tiverem 1000 linhas, a procedure continua e abre o próximo arquivo texto e retorna a linha 545.
Abaixo o código fonte:
Sub LerVariosArquivosTexto()
On Error GoTo TratarErro
Dim lsCaminho As String
Dim llArquivo As Long
Dim llLinha As String
Dim lQtde As Long
Dim lContador As Long
Dim llPlanilhas As Long
Dim lRange As Range
Dim iTotalLinhas As Long
Dim lLinhaAtual As Long
Dim lLocalizar As Long
Dim lTotal As Long
Dim lContaArquivo As Long
'Local do arquivo
lsCaminho = InputBox("Digite o diretório do arquivo:", "Caminho do aruivo...", ActName)
'Total de linhas
iLinhaFinal = Cells(Rows.Count, 1).End(xlUp).Row
iTotalLinhas = Cells(Rows.Count, 1).End(xlUp).Value
'Verifica se o diretório existe e identifica o primeiro arquivo
If Dir(lsCaminho & "\lista1.txt") "" Then
llArquivo = FreeFile
lContador = 1
lLinhaAtual = 1
lContaArquivo = 1
lLocalizar = Cells(lLinhaAtual, 1).Value
'Loop das células
While lContador <= iTotalLinhas
Open lsCaminho & "\lista" & CStr(lContaArquivo) & ".txt" For Input As #llArquivo
'Loop dos arquivos
While Not EOF(llArquivo)
Line Input #llArquivo, llLinha
If lContador = lLocalizar Then
Cells(lLinhaAtual, 2).Value = llLinha
If lLinhaAtual < iLinhaFinal Then
lLinhaAtual = lLinhaAtual + 1
lLocalizar = Cells(lLinhaAtual, 1).Value
Else
GoTo Sair
End If
End If
lContador = lContador + 1
Wend
Close #llArquivo
lContaArquivo = lContaArquivo + 1
Wend
Else
MsgBox "Arquivo não encontrado!"
End If
Sair:
Close #llArquivo
Exit Sub
TratarErro:
MsgBox "Houve um erro na leitura do arquivo!"
GoTo Sair
Resume
End Sub
Então é isso pessoal, se tiverem dúvidas ou problemas em Excel podem enviar que farei o possível para ajudar.
Marcos Rieper



