Page tree

Wenn sie zu dieser Seite Bemerkungen haben klicken sie bitte hier: Kontaktformular

Skip to end of metadata
Go to start of metadata

Allgemeines

Microsoft hat mit Visual Basic for Applications (VBA) ein sehr mächtiges Tool bereitgestellt um innerhalb des Officepaketes eine Automatisierung zu ermöglichen.

Regelmäßig anfallende Arbeiten an Dokumenten sowie massenweise Bearbeitungen können somit effektiv ausgeführt werden.

Das hier dargestellte Beispiel habe ich mit Office 2013 getestet, sollten aber auch mit ggf. geringen Anpassungen in anderen Versionen funktionieren.

Vorbereitungen

Ansicht Entwicklertools aktivieren

Grundlagen der Makroprogrammierung in VBA

Beispiel Bearbeitung doppelter Mails

Code zum Beispiel

Code zum Makro double_mail_items
Public Sub double_mail_items()
    Dim objOL As Outlook.Application
    Dim objItems As Outlook.Items
    Dim objFolder As Outlook.MAPIFolder
    Dim obj As Object
    Dim pDate, pSubject As String
    Dim pSize As Double
    
    pDate = ""
    pSize = 0
    pSubject = ""
    
    Set objOL = Outlook.Application
    Set objFolder = objOL.ActiveExplorer.CurrentFolder
    Set objItems = objFolder.Items
    objItems.Sort "[CreationTime]", False
    
    For Each obj In objItems
        'Debug.Print obj.MessageClass & "|" & obj.Subject
        'IPM.Note ==> normale unverschl¸sselte Mail
        'IPM.Note.MRS.FAX ==> elektronisches Fax
        'IPM.Post ==> Notizzettel
        'IPM.Schedule.Meeting.Request ==> Besprechungsanfrage
        'IPM.Schedule.Meeting.Resp.Neg ==> Besprechungsanfrage Abgelehnt
        'REPORT.IPM.Note.IPNNRN ==> Nicht gelesen
        'IPM.Note.Rules.OofTemplate.Microsoft ==> Abwesenheitsnotiz
        'REPORT.IPM.Note.NDR ==> Unzustellbar
        'Weitere Nachrichtenklassen mˆglich ...
        
        With obj
            If (.MessageClass = "IPM.Schedule.Meeting.Resp.Neg") Or (.MessageClass = "IPM.Note.Rules.OofTemplate.Microsoft") Or (.MessageClass = "REPORT.IPM.Note.NDR") Then
                .Categories = "remove"
                .Save
            End If
            If (.MessageClass = "IPM.Note") Or (.MessageClass = "IPM.Post") Or (.MessageClass = "IPM.Note.MRS.FAX") Then
                'Mit Ber¸cksichtigung pSize funktioniert es nur 1x, weil durch das setzen der Kategorie die Grˆ?e der Nachricht ge‰ndert wird.
                If (pDate = .CreationTime) And (pSize = .Size) And (pSubject = .Subject) Then
                    Debug.Print pDate & "|" & pSubject & "|" & pSize
                    pSize = obj.Size
                    .Categories = "double"
                    .Save
                Else
                    pSize = obj.Size
                End If
                pSubject = obj.Subject
                pDate = obj.CreationTime
            Else
                pSize = 0
                pSubject = ""
                pSubject = ""
            End If
        End With

   
    Next
 
    Set obj = Nothing
    Set objItems = Nothing
    Set objFolder = Nothing
    Set objOL = Nothing
End Sub


Links zum Thema

Erste Schritte mit VBA in Outlook 2010

Übersicht über das Outlook-Objektmodell