Il blog di Gianni Giaccaglini

Blog su VBA e VSTO
Gianni Giaccaglini

My Links

News

NB - V. anche gli ARTICOLI (in fondo a questa barra)
Solo quesiti validi a: giannigiac@tin.it
Il mio Best seller su VBA
(v. www.hoepli.it)


Il mio ultimo libro su Open XML
(v. www.FAG.it):



La mia nipotina ELISA

Foto con dedica a ME di
Bill Gates giovanissimo
nei mitici anni 80!

Categorie Post

Categorie Articoli

Archivio

Immagini

Blog Stats

Aprire file .ZIP in VBA

Aprire file .ZIP in VBA

Richiesta di un visitatore

Non riesco a 'unzippare' i files .ZIP con VBA, (Office XP su WIndows XP PRO) esiste qualche modo?

Risposta, forse parziale

Francamente mi sembra una richiesta "borderline" rispetto agli scopi del VBA. Per estrarre file zippati il modo più veloce penso che sia quello di cliccare sul file .zip, con quel che segue.

Comunque l'unica keyword che mi viene in mente è Shell, che lancia i più semplici programmini.

Nella fattispecie, provi l'istruzione seguente:

Shell ("C:\Utility\WinZip\WINZIP32.EXE C:\MioZip.zip")

Dove ciascuno dovrà inserire il path del suo PC nonché il nome preciso dell'eseguibile e il path dell’ipotetico MioZip.zip.

Per rendere più decente la faccenda si potrebbe pensare a una Sub con argomento:

Sub UnZippa (ZipFile As String)

  Const MioZip = "C:\Utility\WinZip\WINZIP32.EXE"

  Shell(MioZip & " " & ZipFile & ".zip")

End sub

Tale routine tuttofare (o quasi) si può lanciare in vari modi:

Unzippa "C:\MioZip"

Unzippa "C:\TuoZip"

E così via.

Altro non so dire, e probabilmente deluderò chi si attende miracoli, in particolare il successivo trattamento programmatico dei file estratti dal .zip…

Un’altra cosa che confesso di essere venuto a sapere solo da poco è che l’apertura dei file zippati è possibile in Windows Xp anche se nel PC non è installato WinZip.

Ma come richiamare tale utility "nativa"? Se qualcuno lo sa lo dica!

ULTIMA (o penultima) ORA

Da un certo Ennius (ennius@interfree.it) mi perviene poi  questo messaggio:

[ lo scopo si ottiene ] usando le librerie di sistema (Shell.dll o Shell32.dll)e non la funzione Shell. Ci pensa il S.O. ad aprire l'eseguibile associato all'apertura dei file .zip:

 

Sub ApritiSesamoZip()

  Set MyShell = CreateObject("WScript.Shell")

  Percorso = "C:\TuoFile.zip"

  MyShell.Run Chr(34) & Percorso & Chr(34)

End Sub

 

Segnalazione molto interessante, che volentieri  accodo in questo post.

Ma alla fin fine che cosa cambia rispetto alla soluzione con la funzione Shell del Visual Basic? Di primo acchitto non me n'ero accorto, ma il vantaggio è chiaro: non ci si deve preoccupare dell'indirizzo di Winzip e la cosa equivale, in ambito manuale, a un clic sul file .zip. Concludo, pro tempore, con una routine con argomento:

Sub ApriZipFile(FileZip As String)

  Set MyShell = CreateObject("WScript.Shell")

  MyShell.Run Chr(34) & FileZip & ".zip" & Chr(34)

End Sub

 

Sub TestApriZipFile

  ApriZipFile FileZip:="C:\MioZip"

End Sub

 

Penso che questo metodo funzioni con qualunque applicativo associato coi file .zip nel s.o. o, magari, anche laddove tale associazione sfrutta la specifica feature "nativa" di Windows Xp.

 

Il prode Ennius o qualcun altro ce lo fa sapere? Grazie.

 

?>

?>

?>

posted on sabato 15 luglio 2006 11.49