De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

VBA Office Sessie E5 Floris M. Kleijne. Case: Telemarketing-actie  Eén maand, 1.500 telefoontjes  Werkdagen en dagelijkse targets in Excel  Na elke.

Verwante presentaties


Presentatie over: "VBA Office Sessie E5 Floris M. Kleijne. Case: Telemarketing-actie  Eén maand, 1.500 telefoontjes  Werkdagen en dagelijkse targets in Excel  Na elke."— Transcript van de presentatie:

1 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 Word: Bladwijzers behouden bij het invullen Word: Document automatisch en Vragen van u…?

5 Vragen van u?

6 Bedankt voor uw aandacht!  Floris Kleijne  

7

8 Lijst doorlopen en gebruiken

9  Begin bij de eerste cel  Handel die regel helemaal af  Ga naar de volgende cel  Herhaal tot lege cel

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

11 Rapportage maken

12  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  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  Set doc = wrd.Documents.Add(" ")  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  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 target = 0? vul gegevens in bestaat afspraak al? In: EntryID vind bestaande afspraak ja verwijder afspraak ja Uit: EntryID target = 0? nee maak nieuwe afspraak nee Uit: EntryID = "" ja

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?  AppointmentItem95velden  Design-time beschikbaar68  Bruikbaar in Restrict48  Datatype String8  Niet Read-only5(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  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?  Class module: definitie van object  "Object-geörienteerd programmeren in VBA"  Waarom?  Makkelijk herbruikbare code (bouwstenen)  Encapsulation / black-box

31 Class Modules  Ontwerpen  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 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

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


Download ppt "VBA Office Sessie E5 Floris M. Kleijne. Case: Telemarketing-actie  Eén maand, 1.500 telefoontjes  Werkdagen en dagelijkse targets in Excel  Na elke."

Verwante presentaties


Ads door Google