Página 1 de 2

Exportar Arquivo para txt

Enviado: Qua Fev 01, 2012 11:00 am
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:

Re: Exportar Arquivo para txt

Enviado: Sex Fev 03, 2012 9:58 am
por LEANDRO ALVES
Ficou Excelente Rafael. Parabéns.

Re: Exportar Arquivo para txt

Enviado: Sex Fev 03, 2012 10:22 am
por Rafael Monteiro
Satisfação Leandro,

Valeu.

Re: Exportar Arquivo para txt

Enviado: Sex Mar 09, 2012 4:34 pm
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

Re: Exportar Arquivo para txt

Enviado: Sex Mar 09, 2012 5:14 pm
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

Re: Exportar Arquivo para txt

Enviado: Sex Mar 09, 2012 5:36 pm
por webmaster

Re: Exportar Arquivo para txt

Enviado: Qui Jul 24, 2014 8:56 pm
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

Re: Exportar Arquivo para txt

Enviado: Sáb Jul 26, 2014 2:33 am
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.

Re: Exportar Arquivo para txt

Enviado: Sáb Jul 26, 2014 4:31 pm
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

Re: Exportar Arquivo para txt

Enviado: Seg Mai 13, 2019 1:08 pm
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,