Notifications
Clear all

exportar excel para arquivo .txt

11 Posts
3 Usuários
0 Reactions
6,276 Visualizações
(@ericaffj)
Posts: 38
Eminent Member
Topic starter
 

Boa tarde a todos preciso exportar dados de uma planilha de excel para um arquivo txt, porem esse arquivo sera importado para outro sistema, por isso tem um layout ja definido, existe algum macro que possa fazer que consiga fazer isso?
ex.: minha planilha tem:
nome: erica
cidade: curitiba
salario: 1000

o arquivo tem que ficar com seguinte layout:
erica curitiba 0000100000 1200 000000 *
pedro filho londirna 0000090000 000000 *

note que erica começa em 1 termina 50, a cidade começa 51 termina 80; e assim por diante finalizando sempre com *
no começo tem os dados da empresa ai tem as posições tambem para cada um.

Caso algeum possa ajudar, como nao esntendo de programação se puder colocar o comentario no codigo ai consigo ir vendo e fazendo isso no restante das 300 informações que preciso importar rsrs...

Obrigada.

 
Postado : 13/05/2012 1:14 pm
(@robert)
Posts: 561
Honorable Member
 

Erica,
Boa tarde!

Ainda sou iniciante em VBA mais de ante mão poste uma planilha fictícia aqui no fórum com os seguintes dados citados acima por você,.

Att...

Att,
Robert / Moderador

Leia aqui as regras do fórum - Click -->> http://www.planilhando.com.br/forum/viewforum.php?f=7

SE A RESPOSTA FOI ÚTIL, AGRADEÇA CLICANDO NA MÃOZINHA LADO SUPERIOR DIREITO.

 
Postado : 13/05/2012 1:38 pm
(@ericaffj)
Posts: 38
Eminent Member
Topic starter
 

Boa tarde
Entao seria uma planilha simples, e se desse certo eu adaptaria a planilha que tenho no trabalho com todas as informações.ok.
eu imagino que seria um codigo que me desse a seguinte informação.
exportar a celula a1 e completar com espaço ate 50, ai exportar a celaula a2 que começaria no caso 51 e que tenha 30 espaços, ao final do primeiro cliente terminaria com * e continuaria na segunda linha... certo, se puder comentar o codigo que no começo o cadastro da empresa esses espaços sao diferentes, ai eu conseguoirria ir fazendos os teste.ok.

Muito abrigada.

 
Postado : 13/05/2012 1:52 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Veja no tópico viewtopic.php?f=10&t=4327 ; há um arquivo que "faz" o que pede. Porem me chama atenção a estrutura de exemplo em seu arquivo; quando fala exportar A1, parece ser o rotulo e não o dado

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 14/05/2012 7:48 am
(@ericaffj)
Posts: 38
Eminent Member
Topic starter
 

Bom dia
Este eu ja tentei, nao deu certo, ou eu nao consegui identificar o codigo corretamente, pois na hora da exportação nao consegui fazer com que exporte com os espaços necessarios, ex: quando deve começar e terminar cada informação, quando digo celula A1, é a informação condida na planilha na celula A1 (coluna A linha 1). certo.
Se puder comentar oque faz o codigo que esta no topico que enviou o link pode ser que eu consiga.ok.

Muito obrigada pela informação.

 
Postado : 14/05/2012 8:18 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Veja se auxilia:

Sub GeraTxt()

'Identifica o caminho onde está e será salvo exemplo: C:Desktop
Caminho = ThisWorkbook.Path & Application.PathSeparator
'Determina o nome do arquivo a ser salvo
Arquivo = "Exportar_Excel_pTxt.txt"
'"abre" o arquivo txt para gravação dos dados
Open Caminho & Arquivo For Output As #1

'Posiciona-se na planilha chamada "Export"
Worksheets("Export").Activate
Range("A1").Select
'Linha de inicio dos dados ( a 1 são os cabecalhos)
linha = 2
'Inicio do loop, executa ate´linha vazia.
Do Until IsEmpty(ActiveCell.Offset(0, 0))
'Preparação dos campos a serem exportados,
'Exemplo:= Cpo1= valor de A1 concatenado com valor indicado em i10, repetido pela quantidade informada em H5 menos tamanho de A1
        Cpo1 = Cells(linha, 1) & Application.WorksheetFunction.Rept(Cells(10, 9), Cells(5, 8) - Len(Cells(linha, 1)))
         
        Cpo2 = Cells(linha, 2) & Application.WorksheetFunction.Rept(Cells(10, 9), Cells(6, 8) - Len(Cells(linha, 2)))
        
        Cpo3 = Cells(linha, 3) & Application.WorksheetFunction.Rept(Cells(10, 9), Cells(7, 8) - Len(Cells(linha, 3)))
        
        Cpo4 = Cells(linha, 4) & Application.WorksheetFunction.Rept(Cells(10, 9), Cells(8, 8) - Len(Cells(linha, 4)))
'Concatena os dados já arrumados        
        Dados = Cpo1 & Cpo2 & Cpo3 & Cpo4
'Grava o valor em dados no arquivo txt        
    Print #1, Dados
    linha = linha + 1
    If Cells(linha, 1) = Empty Then Exit Do
Loop
fecha o arquivo txt        
Close #1


End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 14/05/2012 9:06 am
(@ericaffj)
Posts: 38
Eminent Member
Topic starter
 

Boa tarde Primeiramente agradeço a ATenção dispensado a mim, e ficou otimo suas observações estou conseguindo chegar onde quero, preciso de somente mais uma informação para dislanchar em meu trabalho, segue anexo o modelo que estou utilizadno se puder ver, fiz algumas observações no codigo e no arquivo txt que esta sendo importado, caso possa me ajudar emplementando o codigo e se possivel fazendo o comentario doque esse codigo faz, ficaria muito grata.

Obrigada mais uma vez.

 
Postado : 14/05/2012 10:20 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Na definição de linha = 0 , comece com linha =1 se quiser "varrer" a planilha à partir da primeira linha.
A sintaxe para Cells e Cells(Numéro da Linha, Numero da Coluna ou Letra da coluna "A")
Para que os valores se alterem é preciso que uma das variaves (linha ou coluna) tb se altere. Nesse caso a linha e a variavel a ser alterada; então a definição das celulas devem ser Cells(linha,1) ou seja na "primeira passada" ira "pegar" o valor de "A1", veja que logo após o Print #1 e acrescentado 1 a variavel linha, então na "segunda passada" Cells(linha,1) representa valor de "A2", assim por diante.
Em sua rotina, como não há acrescimo de caracteres aos valores das celulas, e possivel deletar os Cpo's
ficando assim:
Dados=Cells(linha,1) & espaco & Cells(linha,2) & espaco & zero & espaco & espaco & Cells(linha,3) & espaco & Cells(linha,4) & Cells(linha,5)

Sub GeraTxt()
'Identifica o caminho onde está e será salvo exemplo: C:Desktop
Caminho = ThisWorkbook.Path & Application.PathSeparator
'Determina o nome do arquivo a ser salvo
arquivo = "Exportar_Excel_pTxt.txt"
'"abre" o arquivo txt para gravação dos dados
Open Caminho & arquivo For Output As #1

'variavel com 5 espaços usado para alguns preenchimentos
espaco = "     "
'variavel com 0 usado para alguns preenchimentos
zero = "0"

'Posiciona-se na planilha chamada "Export"
Worksheets("plan1").Activate
Range("A1").Select
'Linha de inicio dos dados ( a 1 são os cabecalhos)
linha = 1
'Inicio do loop, executa ate´linha vazia.
Do Until IsEmpty(ActiveCell.Offset(1, 0))
'Preparação dos campos a serem exportados,
'Para que os valores alterem é necessario que linha ou coluna se alterem
        Cpo1 = Cells(linha, 1)
        Cpo2 = Cells(linha, 2)
        Cpo3 = Cells(linha, 3)
        Cpo4 = Cells(linha, 4)
        Cpo5 = Cells(linha, 5)     
'Concatena os dados já arrumados
Dados = Cpo1 & espaco & Cpo2 & espaco & zero & espaco & espaco & Cpo3 & espaco & Cpo4 & Cpo5
ou 'se for utilizar esta maeneira as linhas das variaveis Cpo podem se excluidas
Dados = Cells(linha, 1) & espaco & Cells(linha, 2) & espaco & zero & espaco & espaco & Cells(linha, 3) & espaco & Cells(linha, 4) & Cells(linha, 5)
'Grava o valor em dados no arquivo txt
    Print #1, Dados
 'Incrementa 1 a variavel linha, para que se desloque ao proximo registro
    linha = linha + 1
    If Cells(linha, 1) = Empty Then Exit Do
Loop
'fecha o arquivo txt
Close #1
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 14/05/2012 11:28 am
(@ericaffj)
Posts: 38
Eminent Member
Topic starter
 

Estamos quase finalizando minhas duvidas rsrs ...
consegui chegar em uma acordo aqui com os codigos, porem como no exemplo que te enviei ele diz o seguinte
'Preparação dos campos a serem exportados,
'Exemplo:= Cpo1= valor de A1 concatenado com valor indicado em i10, repetido pela quantidade informada em H5 menos tamanho de A1
Cpo1 = Cells(linha, 1) & Application.WorksheetFunction.Rept(Cells(10, 9), Cells(5, 8) - Len(Cells(linha, 1)))

esse campo i10 é com que sera preenchido ate chegar na quantidade indicado em H5, porem so funciona se coloco valores ou ponto ou virgula e tal, e se quizer que preencha com espaços.
prometo que essa será a ultima pergunta, pelo menos por hoje rsrs...

Obrigada...

 
Postado : 14/05/2012 12:37 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Creio que está se referindo ao campo I10 da planilha "Export"; e a rotina inicial.
Para que a "preparação" seja completa em I10 deve ser digitado o caracter que deve ser repetido; normalmente "0" (zero sem as aspas) ou " " (espaço tb sem aspas);
Então se for utilizar espaço, selecione a celula I10 e tecle uma vez a barra de espaço. Se tem duvida, no codigo logo após o campo que acrescentou os espaços
digite Msgbox "O comprimento do campo é:= " & len(Cpo2)

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 14/05/2012 1:10 pm
(@ericaffj)
Posts: 38
Eminent Member
Topic starter
 

Como sempre com respostas exelentes...

funcionou perfeitamente...

muito obrigada...

 
Postado : 14/05/2012 1:22 pm