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

Copiar e zipar arquivos Xml

Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 2x no Cartão de Crédito. 

Veja como comprar e saiba mais sobre o material oferecido,  clicando aqui.

Open v3

 

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: