StartDownloadsServiceBeispieleWorkshopsKontakt DeutschEnglish
 
Beispiele
Allgemein
Outlook®
 
Awarded by
Microsoft since 2005:
mvp logo
VBOffice Info
Besucher1391252
Aufrufe5097204
Links
Impressum
Datenschutz
Kontakt
Sicherheitsmodell: Zugriff auf blockierte Eigenschaften
Autor: Michael BauerHomepage
Datum: 18.12.2010Zugriffe: 6230
  
Beschreibung

Seit Outlook 2000 SP3 (optional) bzw. Outlook XP sind einige Eigenschaften aus Sicherheitsgründen blockiert. Das betrifft z.B. die Absenderadresse einer E-Mail.

Seit Outlook 2003 lassen sich in VBA auch die blockierten Eigenschaften lesen, ohne eine Sicherheitswarnung auszulösen, indem alles vom schon vorhandenen Application-Objekt abgeleitet wird. Schon vorhanden heißt, in VBA gibt es bereits eine Variable namens Application, über die auf alle weiteren Objekte und deren Eigenschaften zugegriffen werden kann. Diese Variable braucht nicht erst erstellt zu werden. Und genau hier liegt häufig der Fehler, das betrifft übrigens auch die offizielle VBA-Hilfe: Es wird über die Funktionen GetObject oder CreateObject ein Verweis auf Application erzeugt.

Die folgenden Beispiele demonstrieren den Unterschied. Um die Beispiele zu testen, muss eine E-Mail im Posteingang liegen:

Example_1 zeigt, wie es nicht geht. Statt einfach mit Application zu arbeiten, wird mit der Funktion GetObject die Variable olApp auf das Application-Objekt gesetzt. Die Folge: Beim Versuch, die Absenderadresse einer Mail zu lesen, kommt die Sicherheitsmeldung.

Example_2 zeigt, wie Sie diese Sicherheitsmeldung einfach verhindern: Die Variable olApp wird direkt auf das Application-Objekt gesetzt, ohne die Funktion GetObject zu benutzen.

In Outlook 2003 gibt es noch etwas zu beachten: Wenn Sie ein Script erstellen, das vom Regel-Assistenten beim Eintreffen einer neuen E-Mail aufgerufen werden soll, dann übergibt der Regel-Assistent an das Script das MailItem in der blockierten Form. Ab Outlook 2007 ist das nicht mehr der Fall.

Wenn Sie für diese blockierte E-Mail die Absenderadresse lesen wollen, müssen Sie das gleiche Prinzip anwenden: Die Variable auf die E-Mail muss über das vorhandene Application-Objekt erzeugt werden.

Example_3 zeigt, wie es (in Outlook 2003) nicht geht.

Example_4 zeigt, wie Sie eine neue Variable auf die E-Mail über das Application-Objekt erhalten. Auf diese Weise kann die Absenderadresse ohne Probleme gelesen werden.

Public Sub Example_1()
  Dim olApp As Outlook.Application
  Dim Inbox As Outlook.MAPIFolder
  Dim Mail As Outlook.MailItem

  Set olApp = GetObject(, "Outlook.Application")

  Set Inbox = olApp.Session.GetDefaultFolder(olFolderInbox)
  Set Mail = Inbox.Items(1)
  MsgBox Mail.SenderEmailAddress
End Sub

Public Sub Example_2()
  Dim olApp As Outlook.Application
  Dim Inbox As Outlook.MAPIFolder
  Dim Mail As Outlook.MailItem

  Set olApp = Application

  Set Inbox = olApp.Session.GetDefaultFolder(olFolderInbox)
  Set Mail = Inbox.Items(1)
  MsgBox Mail.SenderEmailAddress
End Sub

Public Sub Example_3(NewMail As Outlook.MailItem)
  MsgBox NewMail.SenderEmailAddress
End Sub

Public Sub Example_4(NewMail As Outlook.MailItem)
  Dim Session As Outlook.NameSpace
  Dim EntryID$, StoreID$
  Dim Mail As Outlook.MailItem

  EntryID = NewMail.EntryID
  StoreID = NewMail.Parent.StoreID

  Set Session = Application.Session
  Set Mail = Session.GetItemFromID(EntryID, StoreID)

  MsgBox Mail.SenderEmailAddress
End Sub
 
 

ReplyAll warnt Sie, bevor Sie unbeabsichtigt allen Empfängern einer E-Mail antworten oder wenn Sie ein vertraulicher BCC-Empfänger der E-Mail ... [weiter]

 

Blitzschneller Zugriff auf die Hauptkategorienliste, gemeinsame Kategorien im Netzwerk, eine Erinnerungsfunktion ... [weiter]

 

SAM legt automatisch Absender, Signatur und Speicherort für gesendete Mails fest, z.B. anhand der ... [weiter]

 

OLKeeper verhindert zuverlässig, dass Mitarbeiter Outlook schließen und dadurch Termine oder E-Mails ... [weiter]

So entgeht Ihnen kein Auftrag mehr:
Telefonservice und Sekretariatsservice