Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Exportar Arquivo para txt

Fórum para agrupar todas as propostas de modelos de planilhas de Excel que essa comunidade consegue imaginar. Teve uma idéia? Produziu algo bem bacana? Esse é o lugar!

Moderador: Rafael Monteiro

Avatar do usuário
Rafael Monteiro
Consultor
Consultor
Mensagens: 277
Registrado em: Seg Nov 28, 2011 8:27 am
Localização: Sorocaba - SP
Contato:

Exportar Arquivo para txt

Mensagem por Rafael Monteiro »

Recentemente foi postado um modelo de importar dados do txt, depois de revisar os códigos resolvi criar um código para exportar os dados para txt. Para minha satisfação eu consegui, e decidi compartilhar esse projeto.

Tem alguns detalhes no código que precisa rever na questão de salvar em xlsm, mas o restante está funcionado bem.

Coloquei também dentro da pasta um arquivo xls de compatibilidade.

Segue em anexo o projeto, espere que gostem.

:lol:
Anexos
Exportar para txt.zip
(46.21 KiB) Baixado 1352 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
LEANDRO ALVES
Manda bem
Manda bem
Mensagens: 161
Registrado em: Dom Jul 25, 2010 7:41 pm

Re: Exportar Arquivo para txt

Mensagem por LEANDRO ALVES »

Ficou Excelente Rafael. Parabéns.


Avatar do usuário
Rafael Monteiro
Consultor
Consultor
Mensagens: 277
Registrado em: Seg Nov 28, 2011 8:27 am
Localização: Sorocaba - SP
Contato:

Re: Exportar Arquivo para txt

Mensagem por Rafael Monteiro »

Satisfação Leandro,

Valeu.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Exportar Arquivo para txt

Mensagem por webmaster »

Rafael,

Ficou bom, mas encontrei um problema, se é que dá para chamar de problema. Depois da exportação, a planilha ativa se "transforma" no txt exportado, já que você utiliza o SaveAs. Com isso, não é possível continuar trabalhando no arquivo. Reescrevi a macro Exportar para ficar da seguinte forma:

Código: Selecionar todos

Sub Exportar()
    Application.DisplayAlerts = False

    template_file = ActiveWorkbook.FullName

    fileSaveName = Application.GetSaveAsFilename( _
                   InitialFileName:="C:\users" + _
                                    VBA.Strings.Format(Now, "mmddyyyy") + ".txt", _
                   fileFilter:="Text Files (*.txt), *.txt")

    If fileSaveName = False Then
        Exit Sub
    End If
    
    'cria uma cópia da pasta de trabalho atual da planilha atual
    Dim newBook As Workbook
    Dim plan As Worksheet
    Set newBook = Workbooks.Add
    
    ThisWorkbook.ActiveSheet.Copy Before:=newBook.Sheets(1)
    
    'exclui as demais planilhas
    For Each plan In newBook.Sheets
        If plan.Name <> ActiveSheet.Name Then
            newBook.Worksheets(plan.Index).Delete
        End If
    Next

    newBook.SaveAs Filename:= _
                          fileSaveName, FileFormat:=xlTextWindows, _
                          CreateBackup:=False
    
    'fecha a pasta de trabalho gerada
    newBook.Close SaveChanges:=True
    Set newBook = Nothing

    MsgBox "O arquivo foi exportado com sucesso! ", vbInformation, "Exportar arquivos"

    Orcamento.Show

End Sub
Assim, o arquivo exportado fica independente. O que acha?

Posso publicar o código no blog?

Abraços


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Rafael Monteiro
Consultor
Consultor
Mensagens: 277
Registrado em: Seg Nov 28, 2011 8:27 am
Localização: Sorocaba - SP
Contato:

Re: Exportar Arquivo para txt

Mensagem por Rafael Monteiro »

Tomás,

Eu tinha observado esse detalhe mas nem tinha pensando em mexer. A alteração que você fez deixou muito mais prático o projeto.

Pode publicar sim, é uma honra ter o projeto publicado no blog!

Abraços.

:D


tiagobzm
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Qui Jul 24, 2014 8:35 pm

Re: Exportar Arquivo para txt

Mensagem por tiagobzm »

Olá amigos.

Por favor, a exportação ocorre sem problemas, porém se na planilha contiver aspas, tais aspas são duplicadas no arquivo texto.. veja o que ocorre:

Original
<?xml version="1.0" encoding="UTF-8"?>
<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
<infNFe versao="2.00" Id="NFe35140704543910000171550010000013630081666466">
<ide>
<cUF>35</cUF>


Exportado
"<?xml version=""1.0"" encoding=""UTF-8""?>"
"<NFe xmlns=""http://www.portalfiscal.inf.br/nfe"">"
"<infNFe versao=""2.00"" Id=""NFe35140704543910000171550010000013630081666466"">"
<ide>
<cUF>35</cUF>


Repare que se dentro da TAG contiver aspas, ele adiciona aspas no início e fim da TAG e também duplica as aspas que existem dentro da TAG.
Se na TAG não tem aspas ocorre tudo OK.


Já tentei corrigir mas to apanhando...

Obrigado,
Tiago


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Exportar Arquivo para txt

Mensagem por Mikel Silveira Fraga »

Tiago, bom dia e seja bem vindo ao fórum.

Veja se o código abaixo lhe ajuda:

Código: Selecionar todos

Sub Estrutura_Xml()

    Dim sEnv As String
    
    sEnv = "<?xml version=""1.0"" encoding=""UTF-8"" ?>" & Chr(13) & Chr(10)
    sEnv = sEnv & "<downloadNFe xmlns=""http://www.portalfiscal.inf.br/nfe"" versao=""1.00"">" & Chr(13) & Chr(10)
    sEnv = sEnv & "  <tpAmb>" & Ambiente & "</tpAmb>" & Chr(13) & Chr(10)
    sEnv = sEnv & "  <xServ>DOWNLOAD NFE</xServ>" & Chr(13) & Chr(10)
    sEnv = sEnv & "  <CNPJ>" & CNPJ & "</CNPJ>" & Chr(13) & Chr(10)
    sEnv = sEnv & "  <chNFe>" & "00000000000000000000000000000000000000000000" & "</chNFe>" & Chr(13) & Chr(10)
    sEnv = sEnv & "</downloadNFe>"
    
    MsgBox sEnv

End Sub
O resultado dessa forma de montar o Xml, pode ser visto na imagem abaixo.


Espero ter ajudado.
Anexos
Resultado MsgBox do código acima.
Resultado MsgBox do código acima.
Mensagem.jpg (96.94 KiB) Exibido 20759 vezes


tiagobzm
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Qui Jul 24, 2014 8:35 pm

Re: Exportar Arquivo para txt

Mensagem por tiagobzm »

Em que parte do código eu deveria inserir esses argumentos que passou para evitar a duplicação das aspas? Fui na tentativa e erro aqui e não funcionou..
Existe uma forma alternativa de "enganar" o VB substituindo as aspas ainda na planilha do excel por alguma simbologia? Seria um pouco mais simples para mim e poderia aplicar em outros casos..

Se eu quiser utilizar o conteúdo de uma célula como o nome do arquivo a ser salvo, ao invés da data e hora, como eu codificaria isto neste caso?

Obrigado pela atenção.

Código: Selecionar todos

Sub Exportar()

    Application.DisplayAlerts = False
 
    template_file = ActiveWorkbook.FullName
 
    fileSaveName = Application.GetSaveAsFilename( _
                   InitialFileName:="C:\Users\XML Entrada\" + _
                                    VBA.Strings.Format(Now, "mmddyyyyhhmmss") + ".xml", _
                   fileFilter:="Text Files (*.xml), *.xml")
 
    If fileSaveName = False Then
        Exit Sub
    End If
 
 
    'cria uma cópia da pasta de trabalho atual da planilha atual
    Dim newBook As Workbook
    Dim plan As Worksheet
    Set newBook = Workbooks.Add
    
       
    ThisWorkbook.ActiveSheet.Copy Before:=newBook.Sheets(1)
       
 
    'exclui as demais planilhas
    For Each plan In newBook.Sheets
        If plan.Name <> ActiveSheet.Name Then
            newBook.Worksheets(plan.Index).Delete
        End If
     
        
    Next
    
   
    newBook.SaveAs Filename:= _
                          fileSaveName, FileFormat:=xlTextWindows, _
                          CreateBackup:=False
 
    'fecha a pasta de trabalho gerada
    newBook.Close SaveChanges:=True
    Set newBook = Nothing
 
    MsgBox "O arquivo foi exportado com sucesso! ", vbInformation, "Exportar arquivos"
 
End Sub


Avatar do usuário
Alex Abreu
Colaborador
Colaborador
Mensagens: 31
Registrado em: Sáb Jun 30, 2018 4:40 pm
Localização: Rio do Campo/SC
Contato:

Re: Exportar Arquivo para txt

Mensagem por Alex Abreu »

webmaster escreveu: Sex Mar 09, 2012 4:34 pm Rafael,
Ficou bom, mas encontrei um problema, se é que dá para chamar de problema. Depois da exportação, a planilha ativa se "transforma" no txt exportado, já que você utiliza o SaveAs. Com isso, não é possível continuar trabalhando no arquivo. Reescrevi a macro Exportar para ficar da seguinte forma:

Código: Selecionar todos

Sub Exportar()
    Application.DisplayAlerts = False
    template_file = ActiveWorkbook.FullName
    fileSaveName = Application.GetSaveAsFilename( _
                   InitialFileName:="C:\users" + _
                                    VBA.Strings.Format(Now, "mmddyyyy") + ".txt", _
                   fileFilter:="Text Files (*.txt), *.txt")
    If fileSaveName = False Then
        Exit Sub
    End If
    'cria uma cópia da pasta de trabalho atual da planilha atual
    Dim newBook As Workbook
    Dim plan As Worksheet
    Set newBook = Workbooks.Add
    ThisWorkbook.ActiveSheet.Copy Before:=newBook.Sheets(1)
    'exclui as demais planilhas
    For Each plan In newBook.Sheets
        If plan.Name <> ActiveSheet.Name Then
            newBook.Worksheets(plan.Index).Delete
        End If
    Next
    newBook.SaveAs Filename:= _
                          fileSaveName, FileFormat:=xlTextWindows, _
                          CreateBackup:=False
     'fecha a pasta de trabalho gerada
    newBook.Close SaveChanges:=True
    Set newBook = Nothing
    MsgBox "O arquivo foi exportado com sucesso! ", vbInformation, "Exportar arquivos"
    Orcamento.Show
End Sub
Assim, o arquivo exportado fica independente. O que acha?
Posso publicar o código no blog?
Abraços
Boa Tarde webmaster, venho te comunicar que o link postado no blog que menciona esse tópico está corrompido, como fui indicado ao post do blog pelo google acabei tendo que adaptar o link para abrir o tópico neste fórum!

Aproveitando a deixa, esse comando citado acima vai me ser muito útil porém irei precisar que tenha um pequeno ajuste
Quando eu ativo a macro ele aparece uma janela onde pede para localizar onde o arquivo txt deve ser salvo e renomeado, teria como fazer isso de forma direta sem essa janela?
Na minha aplicação o nome do arquivo é uma variável e a localização é fixa determinada através do comando

Código: Selecionar todos

Dim Nome_Arquivo
Nome_Arquivo = (Activeworkbook.path & "\temp\" & activesheet.name & " " & format(date, "dd-mm-yyyy") & ".txt")
Como essa macro terá que rodar de forma discreta sem que o usuário que vai cadastrar as diárias perceba, a janela de salvar está sendo inconveniente

Como pode ser adaptado esse código para a minha necessidade?

Atenciosamente,


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder