General

6.16 Zippare files con VBA. (PkZip, Winzip, ...)
  Federico Luciani
(D)
Come posso usare winzip o pkzip da vba per zippare files?

(R)
La cosa è abbastanza semplice da realizzare.
Prima di tutto bisogna procurarsi un software di compressione che può essere lanciato da riga di comando con vari parametri.
Quelli che vi consiglio sono:

- PkZip 2.50 Command Line for Windows 9x/NT


- WinZip 7.0/8.0 (parametri non documentati)


- WinZip Command Line Support Add-On BETA


A questo punto, da VBA, basta utilizzare la funzione Shell(pathname[,windowstyle]).
Di seguito riporto due esempi di utilizzo per la creazione di un file compresso (temp.zip), contenente tutti i files di c:\
Private Sub cmdPkzip_Click()
    Dim retVal As Variant, strCmd As String
    strCmd = "C:\pkware\pkzip25.exe -add -max c:\temp.zip c:\*.*"
    retVal = Shell(strCmd, vbHide)
End Sub

Private Sub cmdWinzip_Click()
    Dim retVal As Variant, strCmd As String
    strCmd = "C:\winzip\winzip32.exe -a -ex c:\temp.zip c:\*.*"
    retVal = Shell(strCmd, vbHide)
End Sub
Nel caso si voglia zippare i files su piu' floppy, allora diventa:
Private Sub cmdWinzip_Click()
    'Con Winzip 8.0 non serve il parametro -&! (Andrea Bersi)
    Dim retVal As Variant, strCmd As String
    strCmd = "C:\winzip\winzip32.exe -a -ex -& a:\temp.zip c:\*.*"
    retVal = Shell(strCmd, vbHide)
End Sub


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.