Você está na página 1de 3

29/8/2014 Como criar um arquivo txt delimitado por tamanho do campo ou espaamento no Excel - artigos TechNet - Brasil (Portugus)

- TechNet Wiki
http://social.technet.microsoft.com/wiki/pt-br/contents/articles/24178.como-criar-um-arquivo-txt-delimitado-por-tamanho-do-campo-ou-espacamento-no-exc 1/3
Como criar um arquivo txt delimitado por tamanho do
campo ou espaamento no Excel
Navegando no Forum do TechNet eu vi uma pergunta de um usurio sobre como criar um arquivo txt delimitado por espao atravs do Excel. Como a pergunta no
obteve nenhuma resposta, resolvi escrever este artigo para demonstrar um mtodo para realizar este tipo de tarefa atravs do Excel.
A pergunta do Frum era:
Tenho uma planilha em excel com apenas 8 colunas (da coluna A ate a H) cada coluna trata de uma informao, uma CNPJ/CPF, outra NOME, outra
CIDADE, e por ai vai, dados de clientes, os quais ficam todos na mesma linha divididos nessas 8 colunas. Preciso gerar um arquivo TXT dessa planilha
que tem aproximadamente 5 mil linhas, ou seja, 5 mil cadastros de clientes para um sistema novo, porm, o layout desse sistema para qual vou
importar e delimitado, por exemplo, na coluna C da planilha em excel tenho os CNPJ/CPF dos clientes, sendo assim, essa informao que esta na coluna
C tem que ocupar exatamente da posio 32 at a posio 45 do layout de exportao .txt, como fazer essa tarefa no excel?
Primeiramente, esclareo que no existe forma de realizar automaticamente este tipo de tarefa no Excel, portanto teremos que utilizar os recursos e funes de texto
no Excel para atender os critrios desejados para cada coluna no arquivo txt. Ento vamos comear com um passo a passo utilizando este exemplo da pergunta do
Frum, supondo as 8 colunas sendo respectivamente, "Nome", "Sexo", "CPF", "RG", "Cidade", "Estado", "Pais", "Data de Nascimento":
Ento, vamos ao passo-a-passo para criar um arquivo txt delimitado por tamanho especifico de cada coluna:
1) Crie uma nova planilha que servir de apoio para definirmos a quantidade desejada de caracteres em cada uma das colunas. Na planilha, mantenha o cabealho
do banco de dados na mesma ordem do banco de dados e digite a quantidade de caracteres mxima que cada coluna pode receber. Na pergunta o usurio disse
que a coluna C tem que ocupar a posio 32 a 45, portanto o seu tamanho mximo ser 14 (32 33 34 35 36 37 38 39 40 41 42 43 44 45 =14 caracteres). Faa esse
clculo para cada uma das 8 colunas conforme o posicionamento desejado para cada uma.
2) Crie nesta planilha de apoio uma outra tabela que servir de apoio para completarmos com espao (" ") os campos que no tiverem a quantidade mxima de
caracteres definida para ele. Assim essa tabela de espaamento dever ter a quantidade de linhas de no mnimo o maior valor de caracteres possvel num campo do
banco de dados. No nosso exemplo, o maior campo o de "Nome" que contem 22 caracteres no mximo. A primeira coluna desta tabela dever indicar quantos
espaos tem na clula a sua direita. Para digitar os espaos na tabela no necessrio ficar contando quantas vezes voc tecla a barra de espao, basta concatenar
um espao com a clula superior. Oberseve a imagem:
29/8/2014 Como criar um arquivo txt delimitado por tamanho do campo ou espaamento no Excel - artigos TechNet - Brasil (Portugus) - TechNet Wiki
http://social.technet.microsoft.com/wiki/pt-br/contents/articles/24178.como-criar-um-arquivo-txt-delimitado-por-tamanho-do-campo-ou-espacamento-no-exc 2/3
3) Crie uma planilha que servir como espelho do seu banco de dados, mas agora com os campos com o tamanho desejado.
A frmula a ser digitada na clula A1, neste exemplo, ser:
=ESQUERDA('Banco de dados'!A1;Apoio!A$2)&SEERRO(PROCV(Apoio!A$2-NM.CARACT('Banco de dados'!A1);Apoio!$J:$K;2;FALSO);"")
Vamos entender o que a frmula faz:
Funo Esquerda: vai pegar no seu banco de dados a quantidade de caracteres a esquerda da clula A1 do seu BD at o valor mximo definido na clula da
nossa tabela de apoio (Apoio!A$2). Note que a deixei a referencia absoluta para a linha, para que no tenhamos problema ao arrastar a frmula.
A segunda parte da frmula verifica se o tamanho do texto atingiu o tamanho desejado, e caso no tenha atingido, ir procurar na tabela de apoio de
espaamento a quantidade de espao para completar a frente do texto.
4) Chegou a hora de gerar o arquivo txt. Antes de salvar, volte para o banco de dados original e mande substituir (Crtl+U) o caractere ";" (Ponto e vrgula) por ","
(vrgula ou qualquer outro caractere). Ento, com a planilha "Banco de Dados NOVO" selecionada, clicamos em "Salvar como" e ento, salvamos o arquivo como .csv
(separado por vrgula). Ir aparecer mensagens dizendo que o tipo de arquivo no suporta pastas de trabalho com multiplas planilhas, mas pode clicar em "OK" e
"SIM" nas caixas de mensagens que aparecerem.
5) Por fim, vamos abrir o arquivo CSV salvo atravs do bloco de notas (Notepad). E mandar substituir (Crtl+H) todos ";" por nada (campo vazio). E salve o seu txt.
Pronto, seu arquivo txt est finalizado separado por espaamento conforme os critrios definidos para cada campo!
29/8/2014 Como criar um arquivo txt delimitado por tamanho do campo ou espaamento no Excel - artigos TechNet - Brasil (Portugus) - TechNet Wiki
http://social.technet.microsoft.com/wiki/pt-br/contents/articles/24178.como-criar-um-arquivo-txt-delimitado-por-tamanho-do-campo-ou-espacamento-no-exc 3/3
Note que no exemplo eu mantive a linha de titulos, mas se o sistema a receber as informaes no requerer a linha de ttulos exclua ela no txt ou no excel antes de
salvar o arquivo.
Espero ter ajudado!
OBSERVAO:
Observei algo importante. Note que no arquivo gerado no exemplo, a coluna de data de nascimento veio no formato geral do Excel, pois o campo l de fato era uma
data. Para resolver este problema e trazer o campo no txt no formato "dd/mm/aaaa" com o tamanho de 10 caracteres, teremos que transformar no banco de dados
todos os valores das colunas que contm data para um formato texto. Mudar a formatao da clula de data para texto no resolver o problema. Observe na
imagem abaixo uma soluo para transformar os valores da data de nascimento para texto no formato "dd/mm/aaaa":
Frmula usada: =CONCATENAR(SE(NM.CARACT(DIA(H2))=1;"0"&DIA(H2);DIA(H2));"/";SE(NM.CARACT(MS(H2))=1;"0"&MS(H2);MS(H2));"/";ANO(H2))
Assim, basta substituir a coluna original da data por esta nova coluna (Copie e cole como valores) e seguir todo o procedimento, que assim no arquivo txt o campo
aparecer como dd/mm/aaaa.

Você também pode gostar