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

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: