Olá amigos, experts ou curiosos (como eu)
Estou diante do seguinte problema:
Preciso de uma macro para importar vários arquivos .txt de uma só vez, porém, também preciso que essa macro faça a leitura de todo o arquivo txt e importe somente as linhas (completas) do arquivo que se iniciarem com um determinado critério (por exemplo: linhas que se iniciem com o caractere "|").
Pesquisando aqui no fórum eu encontrei códigos que atendem a minha necessidade - um para cada situação (um importa vários arquivos e o outro importa apenas 1 arquivo com o critério que disse), porém, preciso fazer destes 2 códigos uma macro só (que importe vários e faça a leitura). Se puderem me ajudar eu estou encaminhando abaixo os códigos que possuo:
MACRO QUE IMPORTA VÁRIOS TXT
Option Explicit
Sub teste_importarvarios()
Dim nxt_row As Long
Dim Texto As String
'Caminho
Const strPath As String = "C:teste"
Dim strExtension As String
Application.ScreenUpdating = False
ChDir strPath
'extensão
strExtension = Dir(strPath & "*.txt")
Do While strExtension <> ""
'Adiciona o nome do arquivo na próxima linha
Range("A65536").End(xlUp).Offset(1, 0).Value = strExtension
nxt_row = Range("A65536").End(xlUp).Offset(1, 0).Row
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & strPath & strExtension, Destination:=Range("$A$" & nxt_row))
.Name = strExtension
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileOtherDelimiter = ":"
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
strExtension = Dir
Loop
Application.ScreenUpdating = True
End Sub
------------------------------------------------------------------------------------------------------------------------
MACRO QUE IMPORTA APENAS UM TXT UTILIZANDO O CRITÉRIO DE IMPORTAR APENAS DETERMINADAS LINHAS (CRITÉRIO "|")
Public Sub LeArquivoTexto()
Dim Texto As String
Dim L As Long 'linha de gravação
'abre o arquivo texto para leitura.
'altere para caminhonome onde seu arquivo está
Open "C:testeteste1.txt" For Input As #1
L = 2: Cont = 1
'loop para percorrer todas as linhas do arquivo texto
Do While Not EOF(1)
Line Input #1, Texto 'lê uma linha
Cont = Cont + 1
'como o texto de exemplo possui tabulações:
'Clean - remove caracteres não imprimíveis.
'LTrim remove espaços a esquerda.
Texto = WorksheetFunction.Clean(LTrim(Texto))
'
'Caso deseje copiar a linha inteira
Select Case Left(Texto, 1)
Case "|" ' col A
Cells(L, 1).Value = Texto
L = L + 1
End Select
Loop
Close #1 'fecha o arquivo texto
End Sub
Postado : 17/04/2018 7:46 am