Ir ao conteúdo

Posts recomendados

Postado

Pessoal.

 

Estou fazendo uma macro para gerar um arquivo txt para usa-lo em outros programa.

Por enquanto está funcionando, porém ele está inserindo ASPAS sem eu programar isso.

Então eu leio alguns dados no excel, formato eles do jeito necessário e salvo como arquivo txt..

 

Segue a Programação

Sub Gerar_Arquivo_txt()
Application.DisplayAlerts = False
Dim Ordem(50) As Integer, IhP(50) As String, IhA(50) As Currency, OndeEstaAtual As String
For i = 2 To 50
Ordem(i) = Worksheets("Entrada de Dados").Cells(i, 4).Value
IhA(i) = Worksheets("Entrada de Dados").Cells(i, 6).Value
Worksheets("Entrada de Dados").Cells(i, 6).NumberFormat = "#,##0.00"
Next i
Worksheets("txt").Activate
For i = 2 To 50
Worksheets("txt").Cells(i - 1, 1).Value = Ordem(i) & ";    " & IhA(i) & ";0"
Next i
OndeEstaAtual = ThisWorkbook.Path
Nome = ThisWorkbook.Name

'MODO DE SALVAR QUE ABRE CAIXA DE DIALOGO
myFile = Application.GetSaveAsFilename(InitialFileName:=OndeEstaAtual, _
filefilter:="Text Files (*.txt),*txt", Title:="Arquivo txt")
If myFile = Falso Then
   Exit Sub
End If
ActiveWorkbook.SaveAs Filename:=myFile, FileFormat:=xlText, CreateBackup:=False
Nome1 = ThisWorkbook.Name
Workbooks.Open (OndeEstaAtual & "\" & Nome)
Workbooks(Nome1).Close
End Sub

 

O programa acima está funcionando e gera o seguinte arquivo em txt no seguinte formato:

 

2;    0;0
3;    0;0
4;    0;0
"5;    17,962;0"
6;    0;0
"7;    12,2025;0"
8;    0;0
9;    0;0
10;    0;0
"11;    7,5167;0"
12;    0;0
"13;    4,1976;0"
14;    0;0
15;    0;0
16;    0;0
"17;    2,4405;0"
18;    0;0
"19;    1,8548;0"
20;    0;0
21;    0;0
22;    0;0
"23;    1,0738;0"
24;    0;0
"25;    1,0738;0"
26;    0;0
27;    0;0
28;    0;0
"29;    0,6833;0"
30;    0;0
"31;    0,5857;0"
32;    0;0
33;    0;0
34;    0;0
"35;    0,5857;0"
36;    0;0
"37;    0,4881;0"
38;    0;0
39;    0;0
40;    0;0
"41;    0,3905;0"
42;    0;0
"43;    0,2929;0"
44;    0;0
45;    0;0
46;    0;0
"47;    0,2929;0"
48;    0;0
"49;    0,2929;0"
50;    0;0
 

Observa-se que quando existe valores diferentes de zero, a macro inseri ASPAS. Porém, não posso ter essas ASPAS.

Alguém poderia me ajudar para tentar eliminar isso via macro?

 

Abraço.

Postado

Uma solução seria voce reescrever seu codigo vba, e usar o comando Print para gerar um txt 'limpo'

Pesquise no google sobre criar txt com print se nao conseguir envie um exemplo com alguns dados para qu o pessoal possa te ajudar.

 

Postado

Gostei muito da dica. Ela funcionou, porém eu gostaria de criar o arquivo .txt pela macro, de forma que o usuário escolhesse o nome e depois o código imprimisse os dados nesse arquivo .txt criado. Porém gera um erro na função- Open ... (Erro - Permissão Negada).

Eu consigo gerar o arquivo .txt vazio. A variável myFile salva o caminho do arquivo gerado. Porém a função Open,  não aceita a variável myFile.

 

Segue código:


 

Sub Gerar_Arquivo_Txt_TESTE()

Application.DisplayAlerts = False

Dim Ordem(50) As Integer, IhP(50) As String, IhA(50) As Currency, OndeEstaAtual As String
Dim myFile As String

For i = 2 To 50 'Pegando valores da aba Teste
Ordem(i) = Worksheets("Teste").Cells(i, 4).Value
IhA(i) = Worksheets("Teste").Cells(i, 6).Value
Worksheets("Teste").Cells(i, 6).NumberFormat = "#,##0.00"
Next i

Worksheets("PQF").Activate         'Estou ativando um sheet que não tem nenhum dado
OndeEstaAtual = ThisWorkbook.Path
Nome = ThisWorkbook.Name

'MODO DE SALVAR QUE ABRE CAIXA DE DIALOGO
myFile = Application.GetSaveAsFilename(InitialFileName:=OndeEstaAtual, _
filefilter:="Text Files (*.txt),*txt", Title:="Arquivo Ih para PQF")
If myFile = Falso Then
   Exit Sub
End If
ActiveWorkbook.SaveAs Filename:=myFile, FileFormat:=xlText, CreateBackup:=False

'Até aqui tudo certo. O programa gera o arquivo .txt vazio no endereço que eu defeni.

Open myFile For Output As #1          'Erro: Permissão Negada
    For i = 2 To 50 'Plotando valores correntes harmônicas na aba PQF
        Print #1, Ordem(i) & ";    " & IhA(i) & ";0"
    Next i
Close #1

MsgBox "O arquivo foi gerado."

End Sub

 

Postado

O error causado e pela sua variavel "myFile", provavelmente esta retornando um endereco invalido ou coisa parecida.

Tente eliminar as hipoteses. 

Tente isso: substitua no Open myFile por um endereço valido e arquivo ja existente no seu diretorio. Exemplo  ->  Open "C:\Temp\Nome_do_Arquivo_Texto.txt" e faça o teste

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...