Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Exportar Arquivo para txt
Moderador: Rafael Monteiro
- Rafael Monteiro
- Consultor
- Mensagens: 277
- Registrado em: Seg Nov 28, 2011 8:27 am
- Localização: Sorocaba - SP
- Contato:
Exportar Arquivo para txt
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.
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.
- Anexos
-
- Exportar para txt.zip
- (46.21 KiB) Baixado 1499 vezes
- LEANDRO ALVES
- Manda bem
- Mensagens: 161
- Registrado em: Dom Jul 25, 2010 7:41 pm
- Rafael Monteiro
- Consultor
- Mensagens: 277
- Registrado em: Seg Nov 28, 2011 8:27 am
- Localização: Sorocaba - SP
- Contato:
Re: Exportar Arquivo para txt
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:
Assim, o arquivo exportado fica independente. O que acha?
Posso publicar o código no blog?
Abraços
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
Posso publicar o código no blog?
Abraços
- Rafael Monteiro
- Consultor
- Mensagens: 277
- Registrado em: Seg Nov 28, 2011 8:27 am
- Localização: Sorocaba - SP
- Contato:
Re: Exportar Arquivo para txt
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.
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.
Re: Exportar Arquivo para txt
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
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
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Exportar Arquivo para txt
Tiago, bom dia e seja bem vindo ao fórum.
Veja se o código abaixo lhe ajuda:
O resultado dessa forma de montar o Xml, pode ser visto na imagem abaixo.
Espero ter ajudado.
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
Espero ter ajudado.
- Anexos
-
- Resultado MsgBox do código acima.
- Mensagem.jpg (96.94 KiB) Exibido 22536 vezes
Re: Exportar Arquivo para txt
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.
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
- Alex Abreu
- 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
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!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:Assim, o arquivo exportado fica independente. O que acha?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
Posso publicar o código no blog?
Abraços
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 pode ser adaptado esse código para a minha necessidade?
Atenciosamente,