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.
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.
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,