bollywood actresses hair loss hair rehab london contact number cheap hair extensions brazilian curly hair with closure hair extension fails human hair wigs black ponytail hairstyles 2018 sunny hair extensions uk hair extensions remy hair extensions weft koko one piece hair extensions clip hair
Copiar e zipar arquivos Xml

... Assinatura do site por 1 ano + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$100,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Copiar e zipar arquivos Xml

Antes de iniciar a sua leitura, clique aqui e cadastre-se para receber comunicados sobre novos artigos.

Usuário Silva:

Boa noite!

Minha aplicação gera arquivos XML, que corresponde a cada nfe emitida e que são salvos na pasta NFe.  Gostaria, que no início de cada mês,  estes arquivos fossem compactados e enviados para a Contabilidade.

Suporte:

Silva, para compactar você pode utilizar o aplicativo WINRAR, executado pelo comando Shell do Access.  Exemplo:

Public sub fncZipar(strArquivoZip$, strArquivoXml$) 
Call shell("C:\Program Files (x86)\WinRAR\WinRAR.exe a -r -ep " & strArquivoZip & " " & strArquivoXml, vbHide)
End Function

Basta informar o nome do arquivo RAR e o nome do arquivo XML a ser compactado. Exemplo:

call fncZipar("e:\RedeAccess\Avelino\NfeXml.rar","e:\redeaccess\avelino\Nfe2101.xml")

No seu projeto, crie uma programação que realize um loop, para ir inserindo os arquivos XML no arquivo RAR.  Vamos supor que você tenha as notas de 2100 a 2130 para zipar:

Dim k
For k = 2100 to 2130 
    call fncZipar("e:\RedeAccess\Avelino\NfeXml.rar","e:\redeaccess\avelino\Nfe" & k & ".xml")
next

Usuário Silva:

Grato, Avelino!

Peço ajuda em mais uma coisa: como fazer um loop pela tabela notas_fiscais, sabendo quais são a do período pesquisado e assim, selecionar os XML correspondentes?

Suporte:

Silva, utilize o Recordset.  Algo assim:

Dim rs as DAO.Recordset
Dim strSql as String
Dim strFiltro as String
Dim strArquivoRar as string

strArquivoRar = "c:\SuaPasta\NfeXml.rar"
strFiltro="DataEmissão Between #" & format(me!DtInicial,"mm/dd/yyy") 
strFiltro = strFiltro & "# AND #" & format(me!DtFinal,"mm/dd/yyyy") & "#;"
strSql = "SELECT * FROM notas_fiscais WHERE " & strFiltro
set rs = currentdb.Openrecordset(strSql)
Do while not rs.eof
   call fncZipar(strArquivoRar,rs!NomeArquivoXml)
   rs.movenext
loop
rs.close
set rs = nothing
msgbox "Arquivos zipado..."

Usuário Silva:

Avelino, tentei aqui, mas deu algum erro.   Até aparece ele fazendo a varredura e zipando (pelo menos exibe a tela do winrar - tirei a invisibilidade), porém, não grava nada na pasta onde teria que estar zipado.  Não gera o arquivo zipado!

Suporte:

Silva, segue um exemplo para você testar. Descompacte numa pasta de teste.  Abra o formulário frmTeste e clique no botão.  Caso esteja tudo OK, irá compactar os arquivos XML que se encontram na pasta.

Nota: na função fncZiper() tem que saber aonde esta instalado o seu WINRAR.  Se em "Program Files" ou se em "Program Files(86)".

Download

Usuário Silva:

Resolvido. Muito obrigado!

Só um adendo, Avelino: o erro ocorreu devido a minha pasta ter espaço entre os nomes: "XML<espaço>AUTORIZADO", pois quando coloco "XML_AUTORIZADO" ele funciona. Tem como o código reconhecer este espaço?

Suporte:

Silva, utilize o chr(34) para delimitar o nome com Aspas. Parte em vermelho.

Public Function fncZipar(strArquivoZip$, strArquivoXml$) As Boolean
strArquivoZip = Chr(34) & strArquivoZip & Chr(34)
strArquivoXml = Chr(34) & strArquivoXml & Chr(34)
Call Shell("C:\Program Files (x86)\WinRAR\WinRAR.exe a -r -ep " & strArquivoZip & " " & strArquivoXml, vbHide)
End Function

Usuário Silva:

Perfeito Avelino!

 


 

 


Não há comentário

Envie seu comentário: