A fórmula secreta para importar arquivos TXT /  CSV com qualquer tipo de separador para o Excel: arquivo schema.ini

Você já deve ter se deparado com a necessidade de importar para o Excel (usando os dados externos) arquivos do tipo txt e csv.

Porém, se esse arquivo não for separado por vírgulas, o Excel não fará a importação, e ou você vai fazer a famosa ‘gambiarra’ no txt para poder importá-lo, ou vai deixar para lá.

Este problema é especialmente relevante quando queremos montar uma tabela dinâmica usando como base algum arquivo TXT.

Para resolver este problema,a  solução é relativamente simples: você deverá criar um arquivo de configuração que irá sobrescrever qualquer outra regra que o Excel tenha para importar arquivos CSV/TXT, com a vantagem de que você poderá ter arquivos TXT/CSV nos mais variados formatos, já que neste arquivo SCHEMA.INI você configura o formato de cada arquivo, individualmente.

Veja o exemplo deste arquivo TXT:

Screenshot_2

Nele, os campos são separados por ponto-e-vírgula. Se formos importar esses dados usando o MS Query, ele mostrará o seguinte:

Screenshot_1

Note que ele mostra os campos um ao lado do outro, e por isso não conseguiremos trazê-los para nossa tabela dinâmica.

Para que isto seja possível, precisamos informar ao Excel que o separador de campos é com o ponto-e-vírgula.

Isso pode ser feito usando o arquivo schema.ini.

Ele é basicamente um arquivo TXT que você renomeia com a extensão .INI e o salva no mesmo diretório onde os seus arquivos CSV/TXT se localizam.

Sua sintaxe é (em azul as informações específicas do CSV que estou importando)


Linha 1: Nome do Arquivo CSV/TXT entre colchetes:

[CSV-Ponto-E-Virgula.csv]


Linha 2: Indicar se o arquivo a ser importado possui na 1a linha cabeçalhos ou se os dados já começam diretamente na 1a linha. Em nosso caso, temos o cabeçalho na 1a linha, por isso colocamos True. Se os dados começassem diretamente na 1a linha, colocaríamos False.

ColNameHeader=True


Linha 3: Indicamos na 3a linha do schema.ini o tipo de separador de campos deste arquivo. As opções são:

Tab Delimited: caso os campos sejam separados por tabulação
CSV Delimited: se eles forem separados por vírgula
Format=Delimited(caractere): outro caractere; neste caso você digita dentro dos parênteses qual é o caractere que separa os campos
FixedLength: tamanho fixo; aqui você precisará informar para cada campo o seu tamanho

Em nosso exemplo, como os campos são separados por ponto-e-virgula, colocamos:

Format=Delimited(;)


Linha 4: Indicar quantas linhas o Excel deverá rastrear para identificar os tipos de dados de cada campo. Ao colocar 0 (zero), ele irá ler o arquivo inteiro – o que pode ser demorado se seu txt for muito grande. Em nosso caso vamos deixar 0, já que o arquivo tem poucas linhas.

MaxScanRows=0


 

Linha 5: Opcional. Você informa qual o formato de data que está usando (caso tenha algum campo de data no arquivo)

DateTimeFormat=dd-mmm-yy


Linha 6 em diante: Você define o tipo de dado de cada campo. Ainda que seja opcional, você evita surpresas, como por exemplo  Excel achar que um campo numérico seja texto e acabe não mostrando os valores:

Os tipos de dados numéricos são os seguintes:

Double: números com decimais
DateTime: data e hora
Text: tratará os dados como texto. Se for um número, ele assumirá que também é texto.

No nosso exemplo, como temos 3 colunas, vamos indicar:

Col1=CampoTexto Text
Col2=CampoNumero Double
Col3=CampoData DateTime


A configuração para este arquivo CSV ficará, ao final: