Outlook 2010: Creëer een follow-up gebaseerd op een mail

Voor mijn werk als systeembeheerder maak ik intensief gebruik van de door mijn werkgever aangeboden Exchange-omgeving. Of dit de beste omgeving is voor mail, agenda en takenlijstjes, laat ik het in midden, dat is een geheel andere discussie. Ik maak geen gebruik van de separate takenlijst in Outlook/Exchange, mijn agenda is tevens mijn takenlijst. Om dit werkbaar te maken, heb ik een aantal simpele VBA-scripts geschreven. Eén ervan, de meest gebruikte, creëert een specifieke afspraak (met vooraf gedefinieerde opties) op basis van een (of meerdere) geselecteerde mail(s); een follow-up.

Laten we beginnen met het maken van een simpel form met wat opties. Open de Macro’s in Outlook en creëer een Userform met de een ComboBox, twee Checkboxen en een Button.

Tijdens het laden van het form (UserForm_Initialize) vullen we de Combox met de waarden. Dit zijn de dagen die een follow-up vooruit gepland kan worden. ‘0’ is een follow-up op dezelfde dag. Aangezien ik follow-ups nooit verder vooruitplan dan 7 dagen, is dat meer dan genoeg. Je kan dit uiteraard simpel aanpassen naar je eigen voorkeur:

For N = 0 To 7
      Me.ComboBox1.AddItem Str(N)
Next
 
Me.ComboBox1.ListIndex = 1

Als op ‘Ok’ gedrukt wordt, moet er wat gebeuren. Voeg onderstaande code toe aan de button (CommandButton1_Click). Eerst de benodige declaraties:

Dim myItem As Object
Dim curItem As Object
Dim oExpl As Outlook.Explorer
Dim oSel As Outlook.Selection
 
Set curItem = Application.ActiveWindow
 
Set oExpl = Application.ActiveExplorer
Set oSel = oExpl.Selection
 
Set myItem = Application.CreateItem(olAppointmentItem)
Set myAttachments = myItem.Attachments

De volgende code controleert of de berekende datum (huidige datum + geselecteerd aantal dagen) niet op een zaterdag of zondag valt. Is dit wel het geval, dan worden er twee dagen (Zaterdag) of een dag (Zondag) bij opgeteld:

NumDays = Val(Me.ComboBox1.Text)
 
myItem.Start = DateAdd("w", NumDays, Date)
If Weekday(myItem.Start) = vbSaturday Then
     myItem.Start = DateAdd("w", NumDays + 2, Date)
End If
 
If Weekday(myItem.Start) = vbSunday Then
    myItem.Start = DateAdd("w", NumDays + 1, Date)
End If

Vervolgens voegen we de gegevens toe aan myItem, de uiteindelijk afspraak. Als onderwerp (myItem.Subject) wordt het onderwerp van de (eerste) geselecteerde mail (oSel.item(1).Subject) gebruikt:

myItem.Subject = "[FU] " & oSel.item(1).Subject
myItem.Body = "[Voeg eventuele bestanden toe]" & Chr(10) & Chr(10)
myItem.Location = "[Voeg locatie toe]"
myItem.AllDayEvent = True
myItem.ReminderSet = False
myItem.Categories = "Follow-Up"
myItem.Importance = 2

Als de checkbox (chkAddAttachments) is aangevinkt, worden alle geselecteerde mails toegevoegd als attachment. Ook wordt de FlagStatus van de geselecteerde mails gemarkeerd als voltooid (het ‘grijze vinkje’ in je maillijst):

If Me.chkAddAttachments.Value = True Then
    For N = 1 To oSel.Count
        myAttachments.Add oSel.item(N), olByValue, N
      oSel.item(N).FlagStatus = olFlagComplete
      oSel.item(N).Save
   Next
End If

Sluit het form af:

Unload UserForm1

Afhankelijk van de waarde van de checkbox chkDisplayAfterSaving, wordt de afspraak na opslaan geopend om eventueel nog extra informatie of bestanden toe te voegen.

 If Me.chkDisplayAfterSaving.Value = True Then
    myItem.Save
    myItem.Display
Else
    myItem.Save
End If

Voeg een nieuwe macro toe aan de standaard VBA-module en voeg onderstaande code toe:

Sub CreateFollowup()
 
    Load UserForm1
    UserForm1.Show
 
 
End Sub

Deze code opent UserForm1. Je kan deze macro toevoegen aan het lint van Outlook of van een open email. Op die manier kan je snel een follow-up van je mail creëren. Download het volledige form (inclusief code) hierzo: followup.zip.

Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponShare on TumblrEmail this to someone
Jacob Fresco Geschreven door:

Techneut, van joodse afkomst, fan van Ajax, getrouwd met Claudia, papa van Lotte en Levi en lid van het erepeloton Waalsdorp