De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Kantoorautomatisering

Verwante presentaties


Presentatie over: "Kantoorautomatisering"— Transcript van de presentatie:

1 Kantoorautomatisering
Didactisch materiaal bij de cursus Kantoorautomatisering Academiejaar Prof. dr. ir. W. Philips

2 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, ” 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 . 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 Department of Telecommunications and Information Processing Fax: University of Gent Tel: St.-Pietersnieuwstraat 41, B9000 Gent, Belgium

3 Visual Basic for Applications

4 De VBA omgeving VB=Visual Basic= een objectgeoriënteerde programmeertaal zoals JAVA, C, … waarmee men “stand-alone” programma’s maakt = aparte (dure) software VBA= Visual Basic for Applications Programmeertaal gekoppeld aan de office programma’s Compatibiliteit VBA compatibel met VB t.e.m. VB versie 6 niet compatibel met VB.NET niet meer ondersteund in Mac OS X sedert 2008 zal verdwijnen uit office 2009 blijven bestaande toepassingen werken?

5 De VBA omgeving Belangrijk: in de VBA-omgeving heb je toegang tot alle interne datastructuren in b.v. een powerpoint-presentatie voorbeelden van datastructuren: een slide, een object op een slide, een presentatie, een rekenblad, … een menu je kan de datastructuren manipuleren, b.v.: de kleur of de oriëntatie van een lijn veranderen, een slide toevoegen, …

6 Waarschuwing Unless you are a skilled programmer, avoid trying to automate anything but the most routine PowerPoint tasks with VBA. Compared with Word and Excel, its object model is incomplete. There’s no easy way to copy macros from one presentation to another, shortof copying and pasting code into the Visual Basic Editor. The lack of a global template makes it difficult to manage macros, and there is precious little documentation asidefrom the very sparse Developer Reference available via Online Help.

7 Te bestuderen De VBA-programmeertaal: syntax controle-structuren
Het VBA-objectmodel datastructuren en de geassocieerde methoden en functies De koppeling van VBA-procedures aan de office interface hoe start je functies en subroutines vanuit b.v. de powerpoint interface? hoe koppel je ze aan knopjes, menu’s of toetsen? Niet echt nuttig meer in Office 2007 Hoe trek je je plan? macro recorder voor zover die nog werkt on-line help

8 De VBA-interface

9 De verschillende VBA-vensters
De VBA-editor bevat verschillende vensters die al dan niet verborgen kunnen zijn op een bepaald ogenblik de project explorer toont de momenteel beschikbare (geopende) documenten en de objecten die ze bevatten op het hoogste hiërarchisch niveau de object browser toont de datastructuren het code venster toont de procedures het properties venster laat toe om allerlei eigenschappen in te stellen van modules, formulieren, … in het immediate venster kan je commando’s uitvoeren Gebruik het view menu om van het ene naar het andere venster om te schakelen

10 Het projectvenster Een VBA-project bevat
objecten: datastructuren van b.v. een werkblad, of zelf toegevoegde datastructuren Excel add-ins functies en subroutines De functies en subroutines worden gegroepeerd in modules De modules worden gegroepeerd volgens de documenten waarin ze zijn opgeslagen Open werkblad(en) module in Book1.xls

11 Werken met modules Een nieuwe module toevoegen
selecteer het gewenste bestand in de project explorer gebruik insert-module Een module een nieuwe naam geven selecteer de module ga naar het properties venster (view menu) verander de waarde van “naam”

12 Het codevenster Het codevenster toont de functies en procedures die in een bepaalde VBA-module gedefinieerd zijn Je kan er nieuwe code aan toevoegen

13 Het “Immediate” venster
In dit venster kan men een VBA-uitdrukking intikken; deze wordt uitgevoerd van zodra ze volledig is een VBA-functie uitvoeren: Worksheets("Sheet1").Name=“zorro” de waarde van een variabele tonen met “?” intikken: ? Workbooks("Book1.xls").Path resultaat: C:\WINNT\Profiles\philips\Desktop Opmerking: niet alle statements en commando’s zijn mogelijk in het immediate venster Een If blok is niet toegelaten en Dim is niet toegelaten immediate venster

14 On-line help Concepten: wat is een functie, … Elementaire taken, vooral i.v.m. de VBA-gebruikersinterface Waaruit bestaat een bepaalde VBA-datastructuur, wat doet een bepaalde VBA-functie … Selecteer een bepaald woord in b.v. het codevenster en druk F1 Kies visual basic help in het menu zoek of blader door de topics consulteer de voorbeelden!

15 De VBA-programmeertaal

16 Variabelen en datatypes
Datatypes: o.a. Integer, Double, Date, Variant, … Een Variant kan getallen, tekst, datums, … bevatten het “huidige datatype” wordt intern bijgehouden, het wordt automatisch geconverteerd waar nodig, en het kan veranderen tijdens de uitvoering van het programma vraagt wel minstens 16 bytes en is trager in gebruik kan handig zijn b.v. om onderscheid te maken tussen “0” en niet-geïnitialiseerd: niet-geïnitialiseerde Variant is Empty Een variabele wordt gedeclareerd met Dim … As Dim tt As Date Dim qq Variabelen variant als het type niet wordt vermeld is het een Variant niet gedeclareerde variabelen worden ook Variant

17 Speciale waarden Speciale waarden van een variant:
Empty: niet-geïnitialiseerd Null: betekent “bevat geen geldige data”; deze waarde wordt expliciet toegekend (b.v. y=Null) Volgens de documentatie heeft elke uitdrukking waarin Null voorkomt als resultaat Null, maar dat klopt niet volledig y= Null or False  y=Null ‘klopt y= Null or True  y=True ‘klopt niet y= True or (Null and False)  y=True ‘klopt niet In een if-test wordt het helemaal absurd; b.v. met y=Null: if y=Null then z=True else z=False  z=False if y=True then z=True else z=False  z=False if y<>True then z=True else z=False  z=False if IsNull(y) then z=True else z=False z=True “1984”, George Orwell: Doublethink is a "vast system of mental cheating," the "power of holding two contradictory beliefs in one's mind simultaneously, and accepting both of them.“

18 Constanten Constante: is een variabele die na initialisatie niet meer kan veranderd worden Sub InsertPP() ’Excel voorbeeld Const pp = "Pietje Potlood" Range("A1").FormulaR1C1 = pp End Sub Nuttig voor parameters die op meerdere plaatsen in de code worden gebruikt men kan alle waarden in één keer veranderen de waarde is overal exact dezelfde (geen inconsistenties door tikfouten) efficiënter dan een variabele: de compiler/interpreter weet dat de waarde en zijn type nooit zal veranderen

19 Arrays en Collections…
Een array-veranderlijke: Dim A(5) As String: 5 string variabelen Gebruik: If A(2)=“hello” … Statische vs. dynamische arrays: Statisch: Dim A(5) As String  vast aantal elementen Dynamisch: Dim A() As String  variabel aantal elementen De grootte van een array kan gewijzigd worden met Redim. Dit werkt echter enkel voor dynamische arrays Redim A(7) maakt een nieuwe, lege en grotere A Redim Preserve A(7) bewaart de bestaande waarden in A

20 … Arrays en Collections
Een array is een geïndexeerde verzameling van veranderlijken van hetzelfde type: allemaal double’s of integers of variants geindexeerd met numerieke gehele indices uit een interval bvan waarden, b.v. 3…18 Collection: een verzameling objecten die als een geheel worden behandeld; de objecten van een collection hoeven niet hetzelfde datatype te hebben kunnen met niet-numerieke waarden worden geïndexeerd Workbooks is de verzameling van alle open rekenbladen Workbooks(2) is het tweede rekenblad uit de verzameling Workbooks(“hallo.xls”) is het rekenblad hallo.xls

21 Procedures: overzicht
Een procedure is te vergelijken met een functie in b.v. Java In VBA onderscheidt men vier soorten procedures subroutines zijn procedures die geen waarde terugleveren  ze kunnen o.a. (en soms) gebruikt worden als macro’s Sub f() Sub g(a,b,c) … … End Sub End Sub functies: zijn procedures die wel waarden terugleveren  ze kunnen b.v. gebruikt worden als werkbladfuncties in Excel of als hulpfuncties in subroutines Function tst(x As Double, y As Double) tst = x * y End Function methodes: zijn acties (speciale functies, …) die kunnen worden toegepast op een object Workbooks(“hallo.xls”).Close sluit een rekenblad properties

22 Functies Datatypes worden aangegeven met het woord As
Function tst(x As Double, y As Double) As Integer tst = x * y ’produceert x*y, geheel afgerond End Function tst … Datatypes worden aangegeven met het woord As Teruggegeven waarden de naam van de functie kan binnen de functie ook als variabele worden gebruikt; bij het einde van de functieoproep wordt die waarde teruggegeven Als een datatype niet wordt opgegegeven is het Variant Argumenten worden normaal doorgegeven als referenties, tenzij ze voorafgegaan worden door ByVal: Function y(x As Double) Function y(ByVal x as Double) x=13 … x=13 … End Function End Function de code x=12: z=y(x) zal in het eerste geval de waarde van x veranderen in 13; in het tweede geval niet

23 Class en Type VBA ondersteunt net als C++ structuren en klassen
Een type is te vergelijken met een C++-structuur Type myrecord Naam As String Voornaam As String Telefoon As Long End Type Dim myrecord r: r.Naam=… r.Telefoon=… Een klasse is een structuur waaraan methoden (=functies of subroutines in een klasse) worden toegevoegd te vergelijken met b.v. een Java- of een C++-klasse  we gaan hier niet verder op in

24 Macro’s, expressions statements
Macro’s zijn procedures zonder argumenten Sub myfirstmacro() End Sub Ze kunnen worden opgeroepen vanuit de gebruikers-interface van de Office programma’s Een statement is een commando dat VBA kan uitvoeren b.v.: for, select, … Een expression is een uitdrukking die kan uitgerekend worden tot een enkele waarde b.v.: x*y+z of True and False of "hello " + "world"

25 Properties… Property: gedraagt zich als een slimme variabele, die ofwel enkel kan worden gelezen ofwel gelezen en geschreven Workbooks(“hallo.xls”).Path is de naam van de map (directory) waarin hallo.xls zich bevindt Sheets(1).Name=“zorro” verandert de naam van het eerste blad in zorro Sheets("Sheet1").Name=“zorro” verandert de naam van Sheet1 in zorro Een property wordt gedefinieerd door een Let en Get functie te definiëren b.v.: yesterday=1 roept de Let functie van yesterday op en: tst=yesterday roept de Get functie van yesterday op properties

26 … Properties Properties zijn dus functies die op een speciale manier worden opgeroepen Property Get Yesterday() As Date Yesterday=Date-1 End Property Property Let Yesterday(NewDate) As Date Date=NewDate+1 End Property Ze gedragen zich dus als variabelen wiens gebruik neveneffecten kan hebben men kan b.v. bepaalde waarden niet toelaten (er b.v. voor zorgen dat yesterday=-1 een foutmelding oplevert) men kan in een aparte teller bijhouden hoe dikwijls de variabele werd gebruikt

27 Scope Procedures, variabelen en constanten hebben een bepaalde scope, d.w.z. een context waarin ze kunnen gebruikt worden variabelen en constanten gedeclareerd in een procedure zijn enkel lokaal binnen die procedure beschikbaar procedures en variabelen, constanten gedeclareerd buiten een procedure kunnen gedeclareerd worden als Private  ze zijn enkel zichtbaar in de huidige module Public  ze zijn ook zichtbaar in andere modules Private Function tst(x, y) … End Function  Dit is o.a. nuttig om b.v. hulpfuncties te verbergen in de excel “user-defined” functielijst (of hulpmacro’s in de “macro’s” lijst)

28 Functie- en procedureoproepen
VBA-functieoproepen kunnen kunnen volgens verschillende syntaxen worden opgeroepen optionele argumenten Voorbeeld: MsgBox(prompt [, buttons] [, title] [, helpfile, context]) Manieren van oproepen volgens positie van de argumenten: MsgBox "Your answer is correct!",0,"Answer Box" boxes volgens naam van de argumenten: MsgBox Title:="Answer Box", Prompt:="Your answer is correct!" functienotatie is vereist als resultaat functie wordt gebruikt: myVar = MsgBox(Prompt:="I enjoy my job.", _ Title:="Answer Box", Buttons:=4) myVar = MsgBox("I enjoy my job.",4,"Answer Box“) Voor meer details, zie de help over syntax

29 With Het With statement laat toe de namen van datastructuren af te korten: AddNameToFooter Sub AddNameToFooter()’Excel voorbeeld UserName = InputBox("What is your name?", "Input Name") With ActiveSheet.PageSetup .LeftHeader = "" .RightHeader = "" .CenterHeader = "" .LeftFooter = UserName .CenterFooter = "" .RightFooter = "Page &P of &N“ End With End Sub Afkorting voor: ActiveSheet.PageSetup.LeftHeader

30 If … Then … ElseIf … Else … EndIf
Function ABC(x As Integer) As String If x >= 12 Then ABC = "A" ElseIf x >= 10 Then ABC = "B" Else ABC = "C" End If End Function ABC Opmerkingen: <> betekent “verschillend van” De functie IIf is soms een compacter alternatief: CheckIt = IIf(TestMe > 1000, "Large", "Small")

31 Do Until … Loop selecteer een rechthoekig bereik van 4x1 cellen, met de “huidige” cel in de linkerbovenhoek Sub AddBorders() ActiveCell.Range("A1:D1").Select Do Until ActiveCell.Value = "" With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThick .ColorIndex = xlAutomatic End With ActiveCell.Offset(2, 0).Range("A1:D1").Select Loop End Sub AddBorders de volgende commado’s slaan op de benedenranden van de geselecteerde cellen selecteer 4x1 cellen 2 rijen beneden de momenteel geselecteerde cel Deze macro “onderlijnt” groepen van 4 cellen op alternerende rijen, maar stopt als hij een lege cel tegenkomt

32 Opmerking Stel dat de huidige cell D3 is
ActiveCell.Range("A1:D1")  D3:G3 ActiveCell.Range("A2:D2")  D4:G4 ActiveCell.Range(“B2:E2")  E4:H4 De Range property gedraagt zich als een soort offsetfunctie: het eerste deel van het argument duidt een verschuiving naar beneden en rechts aan: b.v. “B2:E2”  B2; B2 is de cell op de tweede rij en de tweede kolom, d.w.z. op positie (1,1)  ga vanaf de huidige cel één rij naar beneden en één kolom naar rechts  E4 het volledige argument geeft aan welk bereik van cellen het resultaat is: b.v. “B2:E2”  4 naast elkaar liggende cellen met E4 in de linkerbovenhoek  E4:H4

33 Do Until … Loop voorkom dat het scherm wordt aangepast zolang de macro loopt  sneller Sub RemoveRowsWithZero() Application.ScreenUpdating = False Do Until ActiveCell.Value = "" If ActiveCell.Value = 0 Then ActiveCell.EntireRow.Delete Else ActiveCell.Offset(1, 0).Select End If Loop End Sub selecteer de cel 1 rij beneden de momenteel geselecteerde cel RemoveRowsWithZero

34 For Each … In… Next Sub ReadOrDead()
For Each sli In ActivePresentation.Slides For Each shp In sli.Shapes With shp If .HasTextFrame = msoTrue Then If .TextFrame.HasText = msoTrue Then .TextFrame.TextRange.Font.Color.RGB = RGB(255, 0, 0) End If End With Next End Sub voor elk object op elke slide als het object een TextFrame heeft en effectief tekst bevat, maak de tekst dan rood ReadOrDead For each itereert over alle objecten in een collection

35 De VBA objectmodellen

36 Powerpoint: voorbeeld
Het objectmodel bepaalt welke deelobjecten een bepaald object heeft en welke methoden er kunnen op toegepast worden Objecten worden genoteerd als volgt: ActivePresentation. Slides(3).Shapes.Title.TextFrame.TextRange="zorro“ =de tekst van de titel van de 3e slide van de actieve presentatie dikwijls vraagt het wat zoekwerk (in de on-line help of de object browser) om de juiste structuur te achterhalen je kan ook via het opnemen van een gepaste macro één en ander leren over de onderdelen van objecten TextFrame Line Fill TextRange Font Length Shape

37 PowerPoint properties geasso-cieerd aan een “slide”-object
Dit venster is de object browser subroutines geassocieerd aan een “slide”-object

38 VBA-functies en -subroutines koppelen aan de Office interface

39 Aanpassen menus en werkbalken
In Office 2000/2003 kan je via customize toolbars en menu’s aanpassen bestaande commando’s of macro’s toevoegen aan of verwijderen uit menu’s of toolbars Methode: kies tools-customize in het blad toolbars kan je kiezen welke toolbars zichtbaar zijn en welke niet in het blad commands kan je alle mogelijke commando’s terugvinden; je sleept vervolgens een gewenst commando naar een toolbar of een menu naar keuze; tenslotte kan je een icoon en een naam ingeven In MSWord kan je zelfs een toetsencombinatie associëren aan een bepaald commando Opmerking: toolbars kan je naar gelijk welke plaats slepen

40 Office 2007 vs. Office 2003 Macro’s werken enkel in “macro-enabled” bestandsformaten zoals deze met een “pptm” extensie Macro recorder bestaat enkel nog in Excel en Word werd verwijderd uit PowerPoint Toevoegen van extra menu's is niet langer gemakkelijk Items toevoegen aan "quick access" toolbar kan, maar vereist sterk visueel geheugen (geen tekst!)

41 Code koppelen aan de interface
Macro’s worden gekoppeld aan menu items en knoppen action buttons in Word en Excel: toetsen- combinaties Macro’s kunnen ook worden uitgevoerd via Tools-Macro’s Functies kunnen in Excel worden opgeroepen vanuit formules in cellen ze verschijnen onder de afdeling user defined Ook functies uit andere bestanden kunnen worden opgeroepen, b.v.: =3*voorbeelden.xls!tst(12,13)

42 Code uitvoeren bij openen
WorkBook_Open Je kan een VBA-macro automatisch laten uitvoeren als bepaalde “events” optreden (openen of berekenen werkblad, …) Excel voert b.v. bij het openen van een werkblad de macro WorkBook_Open uit; deze moet wel ingevoegd worden in het ThisWorkBook object en niet in een module! Opmerking: het code-venster toont bovenaan rechts een keuzelijst waarin je alle mogelijke events kan terugvinden!

43 Programmeren in VBA

44 Macro’s opnemen De macrorecorder vertaalt een reeks Office commando’s (b.v. operaties in powerpoint) naar VBA instructies Dergelijke macro’s zijn zelden onmiddellijk bruikbaar ze hangen b.v. te sterk af van de context als ze worden toegepast op een object van een ander type treden er fouten op … bepaalde operaties (b.v. muisbewegingen) worden niet opgenomen Toch is het opnemen van macro’s nuttig ze tonen de volledige namen van de gebruikte objecten (vormen op een slide, cellen in een rekenblad, …) met enige aanpassing krijgt men snel een bruikbare macro opgenomen/aangepast

45 Debuggen Door links van een codelijn te klikken kan je een breakpoint invoegen Bij het uitvoeren een macro of een functie stopt VBA Je kan dan in het “immediate” venster de waarden van variabelen bekijken de code verder lijn per lijn uitvoeren en zien wat er gebeurt

46 Tips Tik alle namen van objecten en functies in met kleine letters; VBA verandert waar nodig letters in hoofdletters dit gaat sneller je kan zo controleren of VBA de naam herkent aan het feit of er letters veranderen in hoofdletters of niet Bij het intikken van de namen van datastructuren toont VBA dikwijls een lijst met mogelijke aanvullingen gebruik de muis om de juiste aanvulling te selecteren en druk vervolgens op TAB of tik gewoon verder

47 Enkele voorbeelden Excel een real-time klok zeeslag Powerpoint
SuperBunny

48 VBA-routines op het web
Microsoft Office 2000/Visual Basic Programmer's Guide, informatie uit het hol van de leeuw Excel & VBA tips from Erlandsen Data Consulting, voorbeelden van complexe VBA code in excel The Excel Logic Page, allerlei excel-functies en macro’s in VBA J-Walk and Associates. The spreadsheet page, allerlei informatie omtrent spreadsheets in het algemeen en Excel in het bijzonder (waaronder links naar VBA-pagina’s)

49 Bibliografie P. Blattner, L. Ulrich, K. Cook en T. Dyck. Que’s Special Edition using Microsoft Excel Que ISBN Hfdst behandelen het automatiseren van Excel, waarbij o.a. VBA aan bod komt Que’s Special Edition using Visual Basic 6. Que. ISBN heb ik zelf nog niet gelezen… Waarschijnlijk wel de moeite R. Jacobson. Microsoft Office2000 Expert Companion. Tips, Tricks and Utilities for the Power user. Microsoft Press ISBN Hdstk. 4 handelt over VBA, maar de andere hoofdstukken bevatten veel VBA-voorbeelden fragmentaire behandeling en soms nogal cryptisch zeker niet voor beginners Ed Bott en Woody Leonhard. Het complete handboek Microsoft Office 2000 Premium. Academic Service ISBN X Hfdstk geven een kort overzicht over het praktisch gebruik van VBA


Download ppt "Kantoorautomatisering"

Verwante presentaties


Ads door Google