Estou realmente precisando disto então deixa eu explicar um pouco com o código tambem. Para ver se facilita para vocês.
Primeiramente eu gostaria de agradecer ao fórum pois este código foi desenvolvido tomando algumas coisas que eu encontrei aqui como base de aprendizado.
Lembrando que este é meu primeiro VBA e eu ainda não estou muito familiar com a Syntax, por isto eu ainda tenho algumas dúvidas - se for possivel explicar um pouquinho o que são as coisas ajuda muito
Abaixo o código que eu tenho até então:
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 = "Exportado_Excel_para_Txt.txt"
'"abre" o arquivo txt para gravação dos dados
Open Caminho & arquivo For Output As #1
'tudo acima funciona muito bem, mas gostaria que o usuario tivesse que passar por um Form antes onde ele teria que informar quão o arquivo do excel de onde serão retirado os dados e o nome que ele deseja dar para o arquivo tipo txt
'Posiciona-se na planilha de onde os dados serão adquiridos (parcialmente funcionando)
Worksheets("plan1").Activate 'funciona bem, mas eu não tenho controle do nome da worksheets, se fosse possivel uma forma que funcionasse sem precisar que ela se chame "plan1" seria util, caso não seja poderia contarnar isto de outra forma que não fosse pelo programa em si.
Range("A3").Select
'Linha de inicio dos dados ( a 1 são os cabecalhos)
linha = 3
'Inicio do loop, executa ate´linha vazia.
Do Until IsEmpty(ActiveCell.Offset(1, 0))
'Preparação dos campos a serem exportados,
AuxCompr = Len(Cells(linha, 1))
AuxInput = Cells(linha, 1)
Do Until AuxCompr = 16
AuxInput = AuxInput & " "
AuxCompr = Len(AuxInput)
If AuxCompr = 16 Then Exit Do
Loop
Dados = AuxInput
Dados = Dados & Cells(linha, 2)
Dados = Dados & Cells(linha, 3)
Dados = Dados & Cells(linha, 4)
AuxCompr = Len(Cells(linha, 5))
AuxInput = Cells(linha, 5) 'parte ruim: Cells (linha,5) esta em numeros - preciso que os dados sejam resgatados com 2 algarismos decimais (#,00)
Do Until AuxCompr = 15
AuxInput = " " & AuxInput
AuxCompr = Len(AuxInput)
If AuxCompr = 15 Then Exit Do
Loop
Dados = Dados & AuxInput 'parte ruim: Cells (linha,6) esta em numeros - preciso que os dados sejam resgatados com 2 algarismos decimais (#,00)
AuxCompr = Len(Cells(linha, 6))
AuxInput = Cells(linha, 6)
Do Until AuxCompr = 15
AuxInput = " " & AuxInput
AuxCompr = Len(AuxInput)
If AuxCompr = 15 Then Exit Do
Loop
Dados = Dados & AuxInput 'parte ruim: Cells (linha,7) esta em numeros - preciso que os dados sejam resgatados com 2 algarismos decimais (#,00)
AuxCompr = Len(Cells(linha, 7))
AuxInput = Cells(linha, 7)
Do Until AuxCompr = 15
AuxInput = " " & AuxInput
AuxCompr = Len(AuxInput)
If AuxCompr = 15 Then Exit Do
Loop
Dados = Dados & AuxInput & "N"
'Grava o valor em Dados no arquivo txt - Funciona corretamente
Print #1, Dados
linha = linha + 1
If Cells(linha, 1) = Empty Then Exit Do
Loop
'fecha o arquivo txt - Funciona corretamente
Close #1
End Sub
Pois bem.
Eu preciso que o usuario abra um programinha e este programinha peça que ele informe qual o arquivo excel que ele quer converter (podendo também ter que informar o nome da planilha de onde virão os dados para resolver o problema que eu citei na linha 12 do codigo) e qual o nome que ele deseja dar para o arquivo convertido (eu quero evitar auto-gerado para o usuário ter mais controle).
Este programinha vai encontrar o arquivo excel informado e realizar o código acima (claro, com as modificações necessárias para funcionar perfeito) para criar um arquivo do tipo txt com a formatação que eu preciso que ele crie (que já está quase toda funcinando, como eu disse no código).
Eu pensei em estruturar também de forma que ele ficasse assim:
Tem uma pasta no computador da pessoa onde encontra-se o programa.
Dentro desta pasta ficariam
O Programa (que pode ser uma planilha excel com o macro/vba necessario)
Uma Pasta onde o usuario colocaria os arquivos do Excel (assim o programa já era feito para procurar só dentro dela)
Uma Pasta onde Seriam salvos os arquivo do tipo .txt (assim o programa já seria feito para gravar tudo ali)
Eu achei que esta seria uma forma bem simples de funcionar por que eu só precisaria instruir ao usuario que ele teria que:
1 - colocar o arquivo excel na pasta apropriada
2 - rodar o programa (informando o nome do arquivo excel apenas e não seu endereço completo)
3 - ir na pasta apropriada para encontrar seu .txt
Postado : 31/10/2012 10:24 am