Mit ‘VBA’ getaggte Artikel

Outlook/Exchange – Senden als (VON) nicht aus Adressbuch

Samstag, 15. Mai 2010

In der Kombination Outlook/Exchange gibt es die Möglichkeit auch im Namen eines anderen Postfaches also mit einer alternativen Absenderadresse Mails zu versenden. Dies gilt natürlich nur sofern entsprechende Berechtigungen bestehen. Sehr gut erklärt ist die gesamte “Senden als” – Thematik hier. Im Folgenden geht es um den Bereich Senden als für ein Postfach. Die Auswahl des Absenders erfolgt über Eingabe im Feld “Von:” in Outlook. Dieses Feld muss ggf. zunächst eingeblendet werden. Bei Outlook 2007 öffnet man eine neue Nachricht und klickt auf Optionen. Hier wählt man nun den Eintrag “Anzeigen aus”.

Es gibt ein etwas merkwürdiges Verhalten von Outlook was die Auswahl des Absenders betrifft. Sofern man den Absender über das Adressbuch und die globale Adressliste auswählt funktioniert “Senden als” wie gewünscht. Gibt man jedoch im Von-Feld einfach die Mailadresse ein funktioniert “Senden als” nicht, bzw. nicht in jeder Konstellation. Man erhält dann eine Fehlermeldung “Unzustellbar” von Exchange.

In meinem speziellen Fall ging es darum einen Absender zu verwenden, welcher nicht in der globalen Adressliste angezeigt wird. Ich habe dann den Absender unter den Kontakten des Benutzers angelegt und zwar in der Form in der er auch in der globalen Adressliste angezeigt werden würde. Das scheint wichtig zu sein, da es wie schon gesagt nur mit der entsprechenden Mailadresse nicht funktioniert. Um das Ganze noch komfortabler zu gestalten habe ich einen kleinen VBA-Makro geschrieben welcher den Absender setzt. Diesen kann man dann über einen Button einbinden und setzt so mit einem Klick den Absender.


Sub Sendenals_Anderer()

Set myOlApp = Outlook.Application
If Not TypeName(myOlApp.ActiveInspector) = "Nothing" Then
myOlApp.ActiveInspector.CurrentItem.SentOnBehalfOfName = "Name wie im Globalen Adressbuch"
End If
myOlApp.ActiveInspector.CurrentItem.Save

End Sub

Man kann statt myOlApp.ActiveInspector.CurrentItem.Save auch myOlApp.ActiveInspector.CurrentItem.Send verwenden. Dann wird die Mail sofort versendet.

Outlook 2007 Kontakt “Speichern unter”-Anzeige nicht korrekt

Dienstag, 16. Juni 2009

Heute bin ich über ein merkwürdiges Verhalten von Outlook 2007 bei der Kontaktdarstellung gestolpert. Es gibt bei den Kontakten in Outlook ein Feld “Speichern unter” welches als Kontaktüberschrift genutzt wird und sich eigentlich frei definieren lässt. Gewünscht war eine Darstellung in der Form “Vorname Nachname (Firma)”. Dies funktionierte auch für die meisten Kontakte. Bei einigen Kontakten wurde die Darstellung jedoch in der Form “Vorname Nachname, Firma” angezeigt obwohl im Outlook-Kontakt-Dialog im Feld “Speichern unter” die Darstellung “Vorname Nachname (Firma)” gewählt war. Nachdem ich mir im Kontakt über “Alle Felder anzeigen” den Wert des Feldes “Speichern unter” angeschaut hatte, stellte ich fest dass dort die Form “Vorname Nachname, Firma” angezeigt wurde. Dieses merkwürdige Verhalten lies sich nicht auflösen. Die Form “Vorname Nachname (Firma)” wurde immer automatisch in “Vorname Nachname, Firma” umgewandelt. Letztendlich habe ich einen Workaround über einen Makro gefunden, der wie folgt funktioniert:

Zunächst ändert man das Feld “Speichern unter” auf einen beliebigen anderen Wert als “Vorname Nachname (Firma)” ab. Danach führt man folgenden Makro aus:

Sub Kontakt_seltsam()
Set myOlApp = Outlook.Application
If Not TypeName(myOlApp.ActiveInspector) = "Nothing" Then
myOlApp.ActiveInspector.CurrentItem.FileAs = "Vorname Nachname (Firma)"
myOlApp.ActiveInspector.CurrentItem.Save
End If

End Sub

Damit ist es mir gelungen den Wert des Feldes “Speichern unter” tatsächlich zu ändern.

Möglicherweise rührt der Fehler von einer Outlook-Einstellung bezüglich der Namensanzeige her, die bei der Erstellung gesetzt wird und dann nicht mehr ohne weiteres änderbar ist.

Outlook – Kontakt als ungelesen markieren

Mittwoch, 10. Juni 2009

Outlook verwendet bei Kontakten einen Schalter gelesen/ungelesen wie auch bei Mails. Wenn der Kontakt allerdings als gelesen markiert ist, gibt es keinen (mir bekannten) Weg dies über die Menüstruktur von Outlook wieder auf ungelesen zu ändern. Da mich ein Kunde fragte wie dies möglich sei, habe ich dazu einen kleinen VBA-Makro entworfen der dies erlaubt.

Ich habe dabei zwei Varianten gewählt, einmal für einzelne Kontakte und dann für einen ganzen Kontaktordner. Realisiert habe ich das Ganze unter Microsoft Office 2007. Abwärtskompatibilität habe ich nicht getestet.

Der Code für die Änderung in einem Kontaktordner lautet:

Sub Kontakt_ungelesen()

Set myOlApp = Outlook.Application
Set myNameSpace = myOlApp.GetNamespace("MAPI")
Set myFolder = _
myNameSpace.GetDefaultFolder(olFolderContacts)
Set myNewFolder = myFolder.Folders("Ungelesen_machen")
For I = 1 To myNewFolder.Items.Count
Set CurItem = myNewFolder.Items.Item(I)
CurItem.UnRead = True
CurItem.Save
Next

Hierbei muss man unterhalb seines Kontakteordners einen Unterordner mit Namen “Ungelesen_machen” erstellen. In diesen Ordner kopiert man alle Kontakt hinein, die ungelesen markiert werden sollen. Dann führt man den Makro aus und alle Kontakte in diesem Unterordner sind ungelesen. Wenn man die Kontakte dann wieder verschiebt (“Drag and Drop” oder “Cut and Paste”) bleibt die Ungelesen-Markierung erhalten. Erst wenn man einen Kontakt per Doppelklick öffnet wird er wieder als gelesen markiert.

Die Lösung für einen einzelnen Kontakt sieht wie folgt aus:

Sub Kontakt_ungelesen_Einzel()
Set myOlApp = Outlook.Application
If Not TypeName(myOlApp.ActiveInspector) = "Nothing" Then
myOlApp.ActiveInspector.CurrentItem.UnRead = True
End If

End Sub

Hierbei wird der Kontakt den man gerade geöffnet hat als ungelesen markiert.

Wenn man die Makros dann noch als Button in die Menüleiste integriert, ist die Steuerung auch recht komfortabel.

Ich hatte auch mit Formularen experimentiert, allerdings war mir das Manipulieren der Standardformulare etwas zu heikel. Das Verwenden benutzerdefinierter Formulare für bereits bestehende Einträge finde ich zu umständlich, daher war für mich die Makrolösung passend.

Über Sinn und Unsinn des Ganzen lässt sich bei Kontakten streiten. Über Filtern der Ansicht könnte man aber z. B. nur ungelesene Kontakte anzeigen um so z. B. einen Mitarbeiter auf neue oder zu überarbeitende Kontakte hinzuweisen.