Kantoorautomatisering: Kantoorautomatisering Prof. dr. ir. W. Philips Didactisch materiaal bij de cursus Academiejaar 2006-2007 philips@telin.ugent.be http://telin.ugent.be/~philips/kantoorautomatisering/
Copyright notice: Copyright notice This PowerPoint presentation was developed as an educational aid to the renewed course 'Office automation' (Kantoorautomatisering), taught at the University of Gent, Belgium as of the year 2000.
This presentation may be used, modified and copied free of charge for non-commercial purposes by individuals and non-for-profit organisations and distributed free of charge by individuals and non-for-profit organisations to individuals and non-for-profit organisations, either in electronic form on a physical storage medium such as a CD-rom, provided that the following conditions are observed:
1. If you use this presentation as a whole or in part either in original or modified form, you should include the copyright notice '© W. Philips, Universiteit Gent, 1998' in a font size of at least 10 point on each slide;
2. You should include this slide (with the copyright conditions) once in each document (by which is meant either a computer file or a reproduction derived from such a file);
3. If you modify the presentation, you should clearly state so in the presentation;
4. You may not charge a fee for presenting or distributing the presentation, except to cover your costs pertaining to distribution. In other words, you or your organisation should not intend to make or make a profit from the activity for which you use or distribute the presentation;
5. You may not distribute the presentations electronically through a network (e.g., an HTTP or FTP server) without express permission by the author.
In case the presentation is modified these requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the presentation, and can be reasonably considered independent and separate works in themselves, then these requirements do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the presentation, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. In particular note that condition 4 also applies to the modified work (i.e., you may not charge for it).
'Using and distributing the presentation' means using it for any purpose, including but not limited to viewing it, presenting it to an audience in a lecture, distributing it to students or employees for self-teaching purposes, ...
Use, modification, copying and distribution for commercial purposes or by commercial organisations is not covered by this licence and is not permitted without the author’s consent. A fee may be charged for such use.
Disclaimer: Note that no warrantee is offered, neither for the correctness of the contents of this presentation, nor to the safety of its use. Electronic documents such as this one are inherently unsafe because they may become infected by macro viruses. The programs used to view and modify this software are also inherently unsafe and may contain bugs that might corrupt the data or the operating system on your computer.
If you use this presentation, I would appreciate being notified of this by email. I would also like to be informed of any errors or omissions that you discover. Finally, if you have developed similar presentations I would be grateful if you allow me to use these in my course lectures.
Prof. dr. ir. W. Philips E-mail: philips@telin.ugent.be
Department of Telecommunications and Information Processing Fax: 32-9-264.42.95
University of Gent Tel: 32-9-264.33.85
St.-Pietersnieuwstraat 41, B9000 Gent, Belgium
Visual Basic for Applications: Visual Basic for Applications
Begrippen: Begrippen VBA:
Projecten, modules
Functies, subroutines
Datatypes
Eenvoudige controlestructuren
De debugger stoppen, door een functie stappen
Technieken: Technieken Toolbars zichtbaar maken, verplaatsen, …
Knoppen toevoegen aan toolbars en menu’s
Macro’s opnemen en elementaire wijzigingen aanbrengen
Elementaire macro’s en functies programmeren
Auto-macro’s (macro’s die automatisch starten) creëren
De betekenis van datastructuren en functies opzoeken in de on-line help
Opmerkingen: Opmerkingen Wat moet je hiervan kennen?
De technieken, functies, eigenschappen, … die in deze oefeningen aan bod komen
De theorie uit de theorieles
De hoofdstukken 2, 41 en 42 van het boek (Office 2000-boek: 2, 53 en 54)
Elementaire uitbreidingen zelf via de on-line help, trial-and-error, … kunnen terugvinden en implementeren
VBA 1: VBA 1 Start Word; zorg ervoor dat onderaan de 'Drawing'-werkbalk zichtbaar is (als dat al niet het geval zou zijn)
1. Voeg aan de 'Drawing'-werkbalk een knopje toe waarmee je een tekstballon kan invoegen in een Word-document; verwijder vervolgens het knopje weer tekstballon 2. Maak een nieuwe werkbalk 'Zorro' aan; voeg er knopjes aan toe om de font in te stellen op Arial, Garamond en Comic Sans MS; plaats (sleep) de werkbalk bovenaan het scherm; test de werking. zelfstudie
VBA 2: VBA 2 Creëer een lege PowerPoint presentatie; maak een macro op die 'geselecteerde' tekst in een blauwe kleur zet; gebruik hiervoor de macrorecorder
Creëer nu een werkbalk 'Zorro' en voeg de zojuist gecreëerde macro blauw er aan toe
Test de macro door allerlei tekst (en tekstvakken) te selecteren en hem erop toe te passen; test de macro ook op b.v. een pijl en experimenteer met de debugger
Schrijf het gecreëerde bestand weg, sluit alle PowerPoint-vensters en herstart PowerPoint met een nieuwe presentatie; werkt de macro nog?
Tips
De macrorecorder neemt teveel operaties op; editeer dus de macro in de VBA-editor en verwijder de overbodige lijn
Als je de werkbalk aanmaakt, dan vind je de gecreëerde macro terug onder 'Commands', 'Macros'
VBA 3: VBA 3 Voeg een nieuwe functie zorro toe aan Excel, die bij een gegeven getal 12 optelt; doe dit als volgt:
Creëer een nieuw werkblad en open de Visual Basic Editor
Zoek in het project-venster de naam van het bestand waarmee je aan het werken bent en voeg een module toe (tip: gebruik het contextmenu (via de rechtermuistoets))
Lees eventueel de on-line help over 'function' en bestudeer in het bijzonder het voorbeeld dat daar wordt gegeven
Open de eerder gecreëerde module door er twee keer op te klikken en creëer de gevraagde functie
Ga terug naar het Excel werkblad (P.S.: je hoeft de VBA-editor niet te sluiten); test de functie zorro door ze te gebruiken in een formule
Resultaat: zie functie.xls
VBA 4: VBA 4 Voeg een tweede functie toe, n.l. Celsius die een temperatuur in Fahrenheit omzet naar Celsius
Je kan deze toevoegen onder de functie zorro
Tip: Celsius=(Fahrenheit-32)*5/9
Creëer in je werkblad twee kolommen waarvan de eerste de fahrenheittemperaturen van 25, 30, 35, … 85 bevat en de tweede de corresponderende celsiuswaarden
Creëer nu een functie CelsiusNoFreeze die de Celsiuswaarde teruggeeft voor temperaturen boven het vriespunt en 0 voor temperaturen eronder
Kopieer hiervoor de functie Celsius en pas ze aan
Gebruik een If-blok of de Iif-functie (zie on-line help)
Resultaat: zie functie1.xls
VBA 5: VBA 5 Open dagen.xls; dit werkblad bevat een aantal datums in kolom A, en een formule in kolom B die het aantal dagen berekent in de betreffende maand
Creëer een VBA-functie dagen die het zelfde resultaat berekent als de formule
Bereken in kolom C het aantal dagen in de maand door gebruik van de gecreëerde functie dagen
Opmerking:
De meeste functies in VBA hebben de zelfde naam als in Excel, behalve Date die in VBA DateSerial heet
Oplossing: dagen1.xls
Kopieer nu dagen.xls naar b.v. test.xls; en gebruik hier de dagen functie uit dagen1.xls; tip: noteer ze als dagen1.xls!dagen
Werkt de oplossing als je dagen1.xls sluit?
Oplossing: dagen2.xls
VBA 6: Open animatie.ppt en maak een werkbalk met daarop drie knopjes die gekoppeld zijn met de macro’s
no, gekoppeld met dontanimate: schakel de animatie van het momenteel geselecteerd object uit
d1, gekoppeld met animate1: animeer het momenteel geselecteerde tekstvak, gegroepeerd volgens niveau 1 alinea’s
d2, gekoppeld met animate2: animeer het momenteel geselecteerde tekstvak, gegroepeerd volgens niveau 2 alinea’s
animatie.ppt bevat reeds de macro dontanimate; de andere macro’s lijken er redelijk sterk op; het is de bedoeling dat je de on-line help en de object browser gebruikt om de gepaste commando’s terug te vinden
Test de goede werking (opmerking: het is niet de bedoeling dat de macro’s in alle omstandigheden foutloos werken)
Resultaat: animatie1.ppt (zonder de werkbalk, vermits die niet kan worden opgeslagen in een ppt-bestand) VBA 6
VBA 7: VBA 7
Voeg in Word een sub-menu zorro toe boven-aan het Format menu;
zorro laat toe het font in te stellen op Courier New of op Arial
Test het menu en verwijder het weer.
Tip: in het 'Commands'-tabblad van 'Customize…' vind je 'New Menu'; sleep dit naar de gepaste plaats; klik met de rechtermuistoets op het nieuwe menu om de naam te veranderen
VBA 8: VBA 8 Voeg een functie MFunc(x) toe die berekent:
Tip: in VBA kan je alle bestaande werkbladfuncties oproepen maar om een of andere reden heeft Sqrt een andere naam gekregen in VBA dan in Excel
Om de correcte naam te zoeken, open je de Object Browser (tip: 'View'-menu); ga naar worksheet functions en zoek (b.v. met de verrekijker of door te bladeren) naar iets dat gelijkt op sqrt
Eens de correcte naam gevonden, keer je terug naar 'Code View' en gebruik je de gevonden functie in jouw functie
Pas in Excel het resultaat toe op de getallen 1 … 12 en vergelijk met de waarde die je met een formule in Excel berekent
Resultaat: functie2.xls
VBA 9.1: VBA 9.1 Op http://j-walk.com/ss/excel/tips/tip30.htm vind je VBA-functies waarmee je de laatste niet-lege cel in een bepaalde rij of kolom kan opsporen
Open last.xls en voeg de functies lastinrow en lastincolumn toe
Bereken in 50 opeenvolgende cellen in de eerste kolom (startend met A2) de laatste waarde in de corresponderende rijen
Bereken in 50 opeenvolgende cellen in de eerste rij (startend met B1) de laatste waarde in de corresponderende kolommen
Verklaar de fouten die je ziet en de foutmeldingen die optreden
Resultaat: last1.xls
VBA 9.2: VBA 9.2 Pas de VBA-code in last1.xls aan zodat lastinrow en lastincolumn niet langer een waarde terugleveren, maar een referentie naar de laatste cel
Ga als volgt te werk
Verwijder de variant type declaratie in de bovenste lijn van de functiedefinitie
Vervang de lijn LASTINCOLUMN = workrange(i).value
door set LASTINCOLUMN = workrange(i)
(idem voor lastinrow)
Voeg boven de eerste rij een rij toe waarin het rijnummer van het laatste element wordt berekend
Voeg voor de eerste kolom een kolom toe waarin het kolomnummer van het laatste element wordt berekend
Oplossing: last2.xls