De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Sessie E5 Floris M. Kleijne

Verwante presentaties


Presentatie over: "Sessie E5 Floris M. Kleijne"— Transcript van de presentatie:

1 Sessie E5 Floris M. Kleijne
VBA Office Sessie E5 Floris M. Kleijne

2 Case: Telemarketing-actie
Eén maand, telefoontjes Werkdagen en dagelijkse targets in Excel Na elke werkdag: Resultaat bijhouden in Excel Dagrapportage naar projectmanager (Gewijzigde) Targets naar Outlook schrijven

3 Case: Telemarketing-actie

4 Onderwerpen sessie E5 Excel: Gegevenslijst doorlopen en gebruiken
Word: Rapportage maken vanuit Excel Outlook: Afspraken in Agenda maken en bijhouden Office: Automatisch werkbalk maken VBA: Class module ontwerpen en gebruiken Bladwijzers behouden bij het invullen Document automatisch en Vragen van u…?

5 Vragen van u?

6 Bedankt voor uw aandacht!
Floris Kleijne

7

8 Lijst doorlopen en gebruiken

9 Lijst doorlopen en gebruiken
Begin bij de eerste cel Handel die regel helemaal af Ga naar de volgende cel Herhaal tot lege cel

10 Lijst doorlopen en gebruiken
Set Cel = Range("A2") Datum = Cel.Value Tijd = Cel.Offset(0,2).Value Call Verwerk(Datum,Tijd) Set Cel = Cel.Offset(1,0) Do Loop Until Cel.Formula = ""

11 Rapportage maken

12 Rapportage maken Voorbereiding: rapportagesjabloon Word opstarten
Nieuwe rapportage maken Gegevens in rapportage invullen Rapportage opslaan

13 Rapportage maken Rapportagesjabloon
Tekst en layout van tevoren vastgelegd Opslaan als *.dot Bij voorkeur in één v/d Sjabloon-mappen Lokaties in sjabloon voor gegevens Excel Markeren met Bladwijzers Formuliervelden kan ook

14 Rapportage maken Word opstarten Zichtbaar of niet?
Word al opgestart  GetObject Word nog niet opgestart  New (runtime error op GetObject!) Geldt niet voor Outlook, PowerPoint Zichtbaar of niet? Zien wat er gebeurt  .Visible = True Performance  .Visible = False Aparte procedure maken!

15 Rapportage maken Nieuwe rapportage maken Gegevens invullen
Set doc = wrd.Documents.Add("<sjabloon>") Indien in Sjabloon-map  pad niet nodig! Gegevens invullen Variabelen invullen in Bladwijzers doc.Bookmarks("Tijd").Range.Text = Tijd Bladwijzer gaat verloren!

16 Rapportage maken Document opslaan
Call doc.SaveAs("Naam.doc") Wordt zonder waarschuwing overschreven!

17 Targets naar Outlook schrijven

18 Targets naar Outlook schrijven
Outlook starten Gegevens naar Outlook Datum, begintijd, eindtijd, onderwerp Afspraak maken / aanpassen Bestaat er al een target-afspraak in Outlook? Zo ja, bestaande aanpassen Zo nee, nieuwe aanmaken EntryID bijhouden in Excel!

19 Targets naar Outlook schrijven
Start Outlook Altijd maar één instantie van Outlook (al zijn meerdere vensters wel mogelijk) Daarom geen GetObject nodig Set olk = New Outlook.Application Set nsp = olk.GetNamespace("MAPI") Set fld = nsp.GetDefaultFolder(…) Gegevens naar Outlook NieuwID = SchrijfTargetNaarOutlook(…)

20 Targets naar Outlook schrijven
Gegevens naar Outlook Uit: EntryID = "" ja bestaat afspraak al? In: EntryID target = 0? nee maak nieuwe afspraak nee vul gegevens in Uit: EntryID nee vind bestaande afspraak ja target = 0? verwijder afspraak ja Uit: EntryID = ""

21 Targets naar Outlook schrijven
Afspraak maken/aanpassen Als afspraak nog niet bestaat  maken Als afspraak bestaat  aanpassen Hoe vind ik een afspraak in Outlook?? Unieke EntryID per item! .Find of .Restrict op de Items in een Folder Set itm = fld.Items.Find(filter) Set itms = fld.Items.Restrict(filter) Maar ja, dat filter…

22 Targets naar Outlook schrijven
Filter bij Find / Restrict [Veldnaam] = "Waarde" Maar… geen wildcards en geen EntryID!! Bestaand veld misbruiken? AppointmentItem 95 velden Design-time beschikbaar 68 Bruikbaar in Restrict 48 Datatype String 8 Niet Read-only 5 (Body, Subject etc.)

23 Targets naar Outlook schrijven
Filter bij Find / Restrict [Veldnaam] = "Waarde" Werkt wel met UserProperties! Dus hoe vind ik een AppointmentItem? UserProperty aanmaken op mapniveau UserProperty toevoegen aan AppointmentItems filter = "[UserProp] = ""waarde""" Set Afspraak = .Items.Find(filter) UserProperty: MyEntryID!!!

24 Targets naar Outlook schrijven
Function VindAfspraak(EntryID) As AppointmentItem Dim Afspraak As AppointmentItem filter = "[MyEntryID] = """ & EntryID & """" Set Afspraak = fld.Items.Find(filter) Set VindAfspraak = Afspraak End Function

25 Automatisch werkbalk maken

26 Automatisch werkbalk maken
Werkbalken in Office: CommandBars Set cmb = Application.CommandBars.Add(…) Belangrijke eigenschappen Hoe ziet de balk eruit?  Position, Visible Is het de menubalk?  Menubar (bij Add) Tijdelijk  Temporary (bij Add)

27 Automatisch werkbalk maken
Knoppen in Office: CommandBarControls Set btn = cmb.Controls.Add(…) Button, Popup, Combo Belangrijke eigenschappen: Hoe ziet knop eruit  Caption, FaceID, Style Wat doet de knop  OnAction Hoe vind ik hem terug?  Tag macro 'MaakBalken'

28 Automatisch werkbalk maken
Aanmaken bij openen document Private Sub Workbook_Open() Verwijderen (!) bij sluiten document Private Sub Workbook_BeforeClose(Cancel As Boolean) Bij verwijderen ook alle knoppen verwijderen Kunnen zijn verplaatst door gebruiker Vandaar de Tag! Application.CommandBars.FindControl Application.CommandBars.FindControls

29 Class modules

30 Class Modules Wat? Waarom? Class module: definitie van object
"Object-geörienteerd programmeren in VBA" Waarom? Makkelijk herbruikbare code (bouwstenen) Encapsulation / black-box

31 Class Modules Ontwerpen Programmeren Gebruiken Interface
Functionaliteit Programmeren Class module Gebruiken Bestaande code veel eenvoudiger

32 Class Modules OfficeApplicaties class Eenvoudig applicaties starten
Access, Excel, Outlook, PowerPoint, Word Client-code vereenvoudigd: Dim wrd As Word.Application Dim oap As OfficeApplicaties Set oap = New OfficeApplicaties Call StartApplicatie(AppWord) Set wrd = oap.WordApplicatie

33 Class Modules OfficeApplicaties class
Method StartApplicatie (met parameters Zichtbaar, NieuweInstantie) Method StopApplicatie Properties voor elke applicatie

34 Class Modules OutlookAgenda class
Eenvoudig afspraken beheren vanuit VBA Zoeken, maken, wijzigen, verwijderen Gebruik makend van UserProperty Client-code vereenvoudigd: Dim age As OutlookAgenda Set age = New OutlookAgenda Call age.WijzigAfspraak(EntryID, …) Call age.VerwijderAfspraak(EntryID, …)

35 Class Modules OutlookAgenda class
Methods: MaakAfspraak, VerwijderAfspraak, VindAfspraak, WijzigAfspraak Properties OutlookApplicatie en Selectieveld

36 Bladwijzers behouden

37 Bladwijzers behouden Bladwijzers in sjabloon voor invoegen gegevens
Bladwijzers gaan verloren na invullen gegevens Soms wenselijk om bladwijzers te behouden Bijv. als meermalen gegevens ingevoegd

38 Bladwijzers behouden Eenmalige actie: Rpt.Bookmarks("Datum").Range.Text = "6-3-08" Bladwijzer behouden: Set bmk = Rpt.Bookmarks("Datum") Set rng = bmk.Range rng.Text = "6-3-08" Rpt.Bookmarks.Add "Datum", rng

39 Rapport automatisch e-mailen

40 Rapport automatisch e-mailen
Geen methode voor binnen Word Outlook aanspreken aanmaken Set eml = olk.CreateItem(olMailItem) Attachment bijvoegen eml.Attachments.Add Rapport.FullName


Download ppt "Sessie E5 Floris M. Kleijne"

Verwante presentaties


Ads door Google