Bestanden automatisch zippen
- 15/01/2008
Voorbeeldbestanden bij dit artikel: | |
Inleiding
Gemiddeld elke paar dagen zie je op Excel/VBA forums de vraag hoe je kan mailen of zippen via Excel VBA. Bijvoorbeeld, een mail moet verzonden worden naar 1000 emailadressen, die elk in een cel in een kolom staan. Of nog, de bestandsnamen van honderden zipfiles staan in een kolom en moeten automatisch uitgepakt worden.
Kijk bij Ron!
Telkens wordt daarop hetzelfde antwoord gegeven, ongeacht de vraag en ongeacht het forum: kijk bij Ron De Bruin. Ron De Bruin is Excel MVP en heeft op zijn site enkele prachtige en nuttige stukken VBA-code staan. Zijn site is zeker een aanrader.
Nu, we moeten uiteraard het wiel niet meer opnieuw uitvinden. We kunnen gewoon de codes van Ron overnemen. Deze week zat ik bij een klant voor het werk, die 66 Excelfiles (30 MB per stuk en groter) moesten zippen. Ik ging naar de site van Ron, en inderdaad, Ron heeft er mooie code voor om dit ineens te doen.
Aparte zipbestanden
Wat de aangehaalde code doet, is alle Excel bestanden uit een zelfgekozen map zippen naar 1 zipfile met behulp van de Windows zipfunctionaliteit. Een mastodont van een file als het ware in mijn geval. Ik wil liever elk Excel bestand uit een zelfgekozen map zippen naar een eigen afzonderlijke zipfile.
Ik vond het niet direct op Ron&rsqo;s site, dus paste ik zijn code aan. Het bestand cind je bovenaan.
Je kan de map die je wil zippen aanpassen in de code. Voer vervolgens de macro DoZipBatch uit. Er is een parameter bKillSourceFiles die je op True of False kan zetten. Bij True worden de oorspronkelijke bestanden na het zippen verwijderd, bij False gebeurt dit niet (dit is default). De zipfiles hebben dezelfde naam als het Excel bestand dat ze bevatten, enkel xls is vervangen door zip.
Dit heeft mij veel tijd bespaard bij de klant, dus kon ik het jullie vanzelfsprekend niet onthouden. Veel succes ermee!