Reinaldo,
Como eu não trabalho muito com o VBA eu gravei uma macro e depois tentei editá-la. Eu faço a importação com a Sub abaixo:
Sub SelecionarArquivo()
'Esta macro abre uma caixa de diálogo para selecionar o arquivo .txt que será importado
Dim NomeArquivo As String
'Abre caixa de diálogo e pergunta qual arquivo abrir
NomeArquivo = Application.GetOpenFilename(filefilter:="Arquivo txt(*.txt),*.xls*,*xlsx*,*xlsm*", _
Title:="Escolha o arquivo para copiar e gravar", MultiSelect:=False)
'Caso vc clique em cancelar, sai da rotina de importação sem mensagem de erro.
If NomeArquivo = False Or NomeArquivo = "false" Then Exit Sub
'Aqui começa a importação do arquivo txt escolhido.
'NomeArquivo = nome do arquivo que foi selecionado acima, com o respectivo endereço.
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & NomeArquivo, Destination:=Range("$B$2"))
.Name = "NomeArquivo"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
'Aqui começa a definição do número de colunas e de caracteres em cada uma.
'Os números abaixo indicam que são 14 colunas e quantos caracteres em cada uma.
.TextFileFixedColumnWidths = Array(1, 9, 31, 11, 28, 9, 41, 22, 22, 22, 22, 22, 22, 22)
.TextFileDecimalSeparator = "."
.TextFileThousandsSeparator = ","
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
Estou anexando o último arquivo TXT que importei.
Grato,
Wagner Lopes
Postado : 28/05/2012 10:46 am