VBA Outlook II

43
VBA Outlook II Sessie B2 Floris M. Kleijne

description

VBA Outlook II. Sessie B2 Floris M. Kleijne. Onderwerpen sessie B1. . . . . . . . . . 3. Itembalken aanpassen. Werkbalken aanpassen=Office-standaard Máár… Alle soorten items zelfde CommandBars Aanpassingen zullen vaak specifiek zijn voor Mail óf Contact óf Note etc. - PowerPoint PPT Presentation

Transcript of VBA Outlook II

Page 1: VBA Outlook II

VBA Outlook II

Sessie B2

Floris M. Kleijne

Page 2: VBA Outlook II

Onderwerpen sessie B11. Basisprincipes

VBA Outlook2. Werkbalken

applicatie-venster Outlook

3. Werkbalken email, contact, afspraak etc.

4. Waarschuwing bij vergeten

bijlage e-mail

5. Standaard-afspraken

6. Meldingen bij nieuwe e-mail in bepaalde map

7. Bijlagen autom. opslaan en verwijderen

8. Nieuwe e-mail (half-)automatisc

h sorteren

9. Contacts aanpassenmet VBA

Casus 1

Casus 4

Casus 2

Casus 5

Casus 7

Page 3: VBA Outlook II

3. Itembalken aanpassen

Werkbalken aanpassen=Office-standaard Máár…

Alle soorten items zelfde CommandBars Aanpassingen zullen vaak specifiek zijn voor

Mail óf Contact óf Note etc. Dus… code!

Om eigen balken te tonen en verbergen Afhankelijk van welk item wordt weergegeven

Page 4: VBA Outlook II

3. Itembalken aanpassen

Objecten en technieken Application en Session Explorer en Inspector Events CommandBars

Page 6: VBA Outlook II

Application en Session

Dim nsp As Outlook.NameSpace

' "Session" was betere naam geweest!!

Set nsp = Application.GetNameSpace("MAPI")

Set nsp = Application.Session

' (sinds Outlook 98)

Page 7: VBA Outlook II

Application en Session

Application.ActiveExplorer

'Het applicatievenster

Application.CreateItem(olAppointmentItem)

'Maak een nieuwe afspraak

nsp.GetDefaultFolder(olFolderContacts)

'Folder Contactpersonen

nsp.PickFolder

'Laat de gebruiker een folder kiezen

Page 8: VBA Outlook II

Explorer en Inspector

Explorer = applicatie-venster

Inspector = venster van geopend item

Page 9: VBA Outlook II

Explorer en InspectorSet xpl = ActiveExplorer

xpl.Selection.Items(1).Display

Set ins = ActiveInspector

MsgBox ins.CurrentItem.FullName

Page 10: VBA Outlook II

Events

Wanneer moet een bepaalde macro worden uitgevoerd? Bij opstarten Outlook Bij binnenkomst nieuwe mail Als er een itemvenster (Inspector) wordt

geopend Bij toevoegen Snelkoppeling aan

Outlookbalk Het juiste Event voor elk moment!

Page 11: VBA Outlook II

Events

Standaard alleen Application-events Andere Events beschikbaar maken

Variabele WithEvents declareren Initialiseren in Application_Startup

Kan alléén in Class module ThisOutlookSession is óók een class module

Page 12: VBA Outlook II

EventsPrivate WithEvents insps As Outlook.Inspectors

Sub Application_Startup() Set insps = Application.InspectorsEnd Sub

Sub insps_NewInspector(Byval ins As Inspector) ' Item geopend, doe er iets mee ' Bijv. werkbalken aanpassen ' afhankelijk van het sóórt item in de InspectorEnd Sub

Page 13: VBA Outlook II

CommandBars

Balken en knoppen maken(zelfde als andere Office-applicaties):

' Werkbalk maken

Dim cmb As Office.CommandBar

Set cmb = …CommandBars.Add(…)

cmb.Visible = True

'Knop op werkbalk maken

Dim btn As Office.CommandBarButton

Set btn = cmb.Controls.Add(…)

btn.Caption = "Mijn macro uitvoeren"

btn.OnAction = "MijnMacro"

Page 14: VBA Outlook II

CommandBarsActiveExplorer.CommandBars

ActiveInspector.CommandBars

Page 15: VBA Outlook II

CommandBars

ActiveInspector.CommandBars = alle CommandBars van alle Inspectors Dus MailItem, AppointmentItem,

ContactItem etc. Alle Inspector-vensters zelfde balken!

Voeg balk toe aan e-mail-Inspector werkbalk ook in Contact of Appointment

Code schrijven om dit te verhinderen! Zie Casus 3

Page 17: VBA Outlook II

Bedankt voor uw aandacht!

www.nationaleofficedag.com Downloaden:

Deze presentatie Voorbeeldcode (alle casi!) Overige documentatie

Page 19: VBA Outlook II

6. Meldingen nieuwe e-mail

Tijdelijk automatisch melding bij nieuwe e-mail in bepaalde mappen Bijvoorbeeld tijdens project

Klant wil makkelijk waarschuwingen aanzetten voor gekozen map (en weer makkelijk uitzetten) Regels en Waarschuwingen te bewerkelijk Dus graag VBA-oplossing

NB: Dus combi met autom. sorteren(casus

Page 20: VBA Outlook II

6. Meldingen nieuwe e-mail

Makkelijk beheer Meldingen-mappen:Outlook-balk / snelkoppelingen Automatische meldingen voor

elke map die daar een snelkoppeling heeft (Minstens) twéé mogelijke

benaderingen …

Page 21: VBA Outlook II

6. Meldingen nieuwe e-mail

Objecten en technieken Application en Session Explorer en Inspector Folders Items Events De Outlook-balk

Page 22: VBA Outlook II

Folders

Dim fld As Outlook.MAPIFolder

Set fld = Application.Session. _Folders("Persoonlijke mappen")

Set fld = fld.Folders("Inbox")

'etc

'of

Set fld = Application.Session. _GetDefaultFolder(olFolderInbox)

Page 23: VBA Outlook II

Folders Recursie!!

Public Sub DoorloopSubFolders(ByRef Map _ As MAPIFolder)

Dim fld As Outlook.MAPIFolder

'Doe eerst "iets" met de Map

For Each fld In Map.Folders

Call DoorloopSubFolders(fld)

Next fld

End Sub

Page 24: VBA Outlook II

Items

Alles wat zich in een Outlook-folder kan bevinden E-mail, Contactpersoon, Notitie etc. etc.

Gemengde inhoud van Folders Bijv. Email en Vergaderverzoek Bijv. Contactpersoon en Distributielijst

Item datatype is Object

Page 25: VBA Outlook II

Items

Alle items doorlopen!!Public Sub DoorloopItems(ByRef Map As MAPIFolder)

Dim itm As Object

Dim eml As Outlook.MailItem

For Each itm In Map.Items

If TypeOf itm Is Outlook.MailItem Then

Set eml = itm

'Doe iets met het gevonden mailtje

End If

Next itm

End Sub

Page 26: VBA Outlook II

Items

Nieuw Item makenDim con As Outlook.ContactItem

Set con = Application.CreateItem(olContactItem)

With con

.FirstName = "Jan"

.LastName = "Jansen"

.Display

.Save

End With

Page 27: VBA Outlook II

De Outlook-balkDim xpl As Explorer

Dim pne As OutlookBarPane

Dim str As OutlookBarStorage

Dim grp As OutlookBarGroup

Dim sct As OutlookBarShortCut

Set xpl = ActiveExplorer

Set pne = xpl.Panes("OutlookBar")

Set str = pne.Contents

Set grp = str.Groups("Meldingen")

For Each sct In grp.Shortcuts

'Doe iets met elke Shortcut

Next sct

Page 28: VBA Outlook II

7. Attachments opslaan

PST-bestanden groeien héél groot Eén v/d redenen: bijlagen in PST-bestand

Deel v/d oplossing: Bijlagen extern opslaan Verwijderen uit e-mail

Automatiseren!

Page 29: VBA Outlook II

7. Attachments opslaan

Wanneer: Automatisch na versturen e-mail met

bijlage Handmatig (knop) bij ontvangen e-mail

(zie casus 3) Proces:

Laat gebruiker bijlagen opslaan Verwijder alle bijlagen uit de e-mail Voeg een lijst toe van de verwijderde

bijlagen

Page 30: VBA Outlook II

7. Attachments opslaan

Objecten en technieken Application en Session Explorer en Inspector Folders Items Events Gaten in het objectmodel

Page 31: VBA Outlook II

Gaten in het objectmodel

Access, Excel, Word: objectmodel vrijwel 1:1 met applicatiefuncties

Outlook: objectmodel heel beperkt Géén macrorecorder Vele UI-functies niet beschikbaar als

methods of properties Workaround: knop uitvoeren!

Iets beter dan SendKeys

Page 32: VBA Outlook II

Gaten in het objectmodel

' Werkbalkknop vinden en uitvoeren

Const BIJLAGEN_OPSLAAN_ID = 3167

Dim cbs As CommandBars

Dim ctl As CommandBarControl

Set cbs = ActiveInspector.CommandBars

Set ctl = cbs.FindControl(ID:=BIJLAGEN_OPSLAAN_ID)

If Not ctl Is Nothing Then oControl.Execute

Page 33: VBA Outlook II

1. Basiskennis VBA Outlook

Objecten en technieken Application en Session Explorer en Inspector Folders Items Events Gaten in het objectmodel

Page 34: VBA Outlook II

5. Standaardafspraken

Regelmatig dezelfde afspraak op verschillende dagen Bijv Teamoverleg altijd om 10:30 in kamer

4.14, maar steeds op andere dag Bijv. Etentje altijd om 19:30, maar steeds

op andere dag en lokatie Nieuwe afspraak maken op

geselecteerde dag Standaardwaardes alvast invullen

Page 35: VBA Outlook II

5. Standaardafspraken

Objecten en technieken Application en Session Items

Page 36: VBA Outlook II

4. Herinnering bijlagen

Bij verzenden e-mail: Staat er woord in tekst dat op bijlage wijst? Zo ja, zijn er bijlagen bijgesloten? Zo nee, vraag dan aan gebruiker of dat

klopt Zo nee, laat gebruiker bijlagen kiezen

Wannéér moet dit gebeuren Event Wát moet er precies gebeuren

Page 37: VBA Outlook II

4. Herinnering bijlagen

Objecten en technieken Application en Session Explorer en Inspector Folders Items Events Gaten in het objectmodel

Page 38: VBA Outlook II

2. Applicatiebalken aanpassen

Objecten en technieken Application en Session Explorer en Inspector CommandBars

Page 39: VBA Outlook II

9. Contactpersonen via VBA

Contactpersonen en ActiveSync Synchroniseren tussen Outlook en PDA ActiveSync verwisselt soms thuis- en

werkadres Outlook zet werkadres standaard in lijst

Soms is echter privé-adres gewenst

Page 40: VBA Outlook II

9. Contactpersonen via VBA

Objecten en technieken Application en Session Items

Page 41: VBA Outlook II

8. Mail autom.sorteren

Ontvangen e-mail automatisch sorteren Van bepaalde afzenders altijd sorteren Van andere afzenders nooit sorteren Sorteren in map met naam afzender Moet blijven werken, ook als mapindeling

wijzigt (maar naam map hetzelfde)

Page 42: VBA Outlook II

8. Mail autom.sorteren

Proces: nieuwe e-mail komt binnen Controleer automatisch:

Is afzender uitgesloten van automatisch sorteren?

Heeft afzender al (ergens) een sorteermap? Vraag gebruiker: sorteren? Ja maak map op standaardplek Nee registreer afzender als uitzondering

Page 43: VBA Outlook II

8. Mail autom.sorteren

Objecten en technieken Application en Session Explorer en Inspector Folders Items Events