COMPACTAR PASTA PEGANDO TODO CAMINHO

AMELINHACODE 03/05/2022 21:25:15
#499772
Boa noite pessoal,

Preciso compactar a pasta "202204" que fica nesse local "C:\Sistemas\Projetos\Sistema
fe\arquivos\procNFe\202204"
observação: 202204 é o ano e o mes.... entao no outro mes será 202205... por isso coloquei 2 combobox cbomes e cboano para definir qual mes(pasta compactar)

E preciso jogar esse arquivo compactado na C:\Sistemas\Projetos\Sistema\ExportarXML

Observação: esse caminho "C:\Sistemas\Projetos\Sistema\" é meu App.path

Então fiz assim:

Dim FileZipName As String, PathToCompress As String, DestPath As String, FullPathZip As String
Dim vMes As String, vAno As String

vMes = cboMes.Text "07
vAno = cboAno.Text "2021


"INICIAR COMPACTAÇÃO
If IniciaComponenteCompactacao Then

i = 0

"Caminho para comprimir arquivo
DestPath = DiretorioDestino

"nome do arquivo
NomeEmp = vRazao
NomeEmp = RemoveAcento(NomeEmp)
NomeEmp = Substitui(NomeEmp, ".,/", "", UM_A_UM)
NomeEmp = Substitui(NomeEmp, " ", "_", UM_A_UM)
FileZipName = NomeEmp & "_" & vMes & vAno & ".rar"

"local de destino + ficheiro.rar
DiretorioDestino = App.path & "\ExportarXML"
FullPathZip = Transforma(DiretorioDestino & IIf(Right(DiretorioDestino, 1) = "\", "", "\") & FileZipName)

DiretorioDestino = App.path & "
fe\arquivos\procNFe" & "\" & vAno & vMes
PathToCompress = Transforma(DiretorioDestino)

"Chama o compressor que se encontra instalado para o efeito.
If xWinRar <> "" Then
Shell xWinRar & " a " & FullPathZip & " " & PathToCompress, vbNormalFocus ", vbHide
Else
Shell xWinZip & " -a " & FullPathZip & " " & PathToCompress, vbNormalFocus ", vbHide
End If

DoEvents
End If


Tudo funcionando perfeitamente... o arquivo é criado na pasta correta... com nome correto... contento os arquivos que estão na pasta de origem...
POREM.... quando abro o arquivo percebo que ele criou todas essas subpastas "Sistemas\Projetos\Sistema
fe\arquivos\procNFe\202204" que tenho q ir abrindo até chegar no arquivo.
Gostaria que dentro do arquivo compactado tivesse somente a pasta "202204" com seus arquivos.
Percebi também que ele tá colocando as pastas que está dentro diretório de destino ExportarXML dentro do arquivo compactado
KERPLUNK 05/05/2022 14:57:42
#499785
Resposta escolhida
O que voce quer é uma opção do winrar mesmo. Se não me engano, -ep1. Então ficaria assim:

"Chama o compressor que se encontra instalado para o efeito.
If xWinRar <> "" Then
Shell xWinRar & " a -ep1 " & FullPathZip & " " & PathToCompress, vbNormalFocus ", vbHide
Else
Shell xWinZip & " -a -ep1 " & FullPathZip & " " & PathToCompress, vbNormalFocus ", vbHide
End If


Caso não seja exatamente isso que queria, então seria bom consultar a documentação do Winrar para achar a opção que mais te satisfaz. Não é uma questão de código, essa parte parece ok, é sim uma opção do compactador.
AMELINHACODE 05/05/2022 19:41:02
#499789
KERPLUNK tu é um genio cara!

Obrigada
Tópico encerrado , respostas não são mais permitidas