VBA Outlook II
-
Upload
whoopi-colon -
Category
Documents
-
view
36 -
download
1
description
Transcript of 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
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
3. Itembalken aanpassen
Objecten en technieken Application en Session Explorer en Inspector Events CommandBars
Application en Session
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)
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
Explorer en Inspector
Explorer = applicatie-venster
Inspector = venster van geopend item
Explorer en InspectorSet xpl = ActiveExplorer
xpl.Selection.Items(1).Display
Set ins = ActiveInspector
MsgBox ins.CurrentItem.FullName
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!
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
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
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"
CommandBarsActiveExplorer.CommandBars
ActiveInspector.CommandBars
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
Bedankt voor uw aandacht!
www.nationaleofficedag.com Downloaden:
Deze presentatie Voorbeeldcode (alle casi!) Overige documentatie
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
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 …
6. Meldingen nieuwe e-mail
Objecten en technieken Application en Session Explorer en Inspector Folders Items Events De Outlook-balk
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)
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
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
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
Items
Nieuw Item makenDim con As Outlook.ContactItem
Set con = Application.CreateItem(olContactItem)
With con
.FirstName = "Jan"
.LastName = "Jansen"
.Display
.Save
End With
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
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!
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
7. Attachments opslaan
Objecten en technieken Application en Session Explorer en Inspector Folders Items Events Gaten in het objectmodel
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
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
1. Basiskennis VBA Outlook
Objecten en technieken Application en Session Explorer en Inspector Folders Items Events Gaten in het objectmodel
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
5. Standaardafspraken
Objecten en technieken Application en Session Items
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
4. Herinnering bijlagen
Objecten en technieken Application en Session Explorer en Inspector Folders Items Events Gaten in het objectmodel
2. Applicatiebalken aanpassen
Objecten en technieken Application en Session Explorer en Inspector CommandBars
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
9. Contactpersonen via VBA
Objecten en technieken Application en Session Items
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)
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
8. Mail autom.sorteren
Objecten en technieken Application en Session Explorer en Inspector Folders Items Events