VBA Outlook: Cursor an bestimmte Position in E-Mail setzen

VBA - Visual Basic for Application

VBA eignet sich wunderbar, um bestimmte Arbeitsabläufe in der Microsoft-Office-Welt zu automatisieren und sich damit tägliche stupide Arbeiten und unnötige Klicks vom Leibe zu halten. So kann man sich zum Beispiel ein Makro programmieren, welche automatisch mit einem bestimmten Text auf eine E-Mail antwortet. Um sich weitere Klicks zu sparen, kann man den Cursor gleich an eine bestimmte Stelle in der E-Mail positionieren, sodass man an dieser Position gleich weiterschreiben kann, z.B. weil man eine individuelle Anrede einfügen möchte.

So könnte der automatische Antwort-Text zum Beispiel eine Anrede mit einem Platzhalter enthalten:

“Hallo …, […]”

wobei bei “…” dann z.B. ein individueller Name eingegeben werden soll.

Funktion SendKeys verwenden

Um das zu erreichen, kann man im VBA-Code die Funktion SendKeys verwenden.

Sub ReplyMSG()
    Dim olItem As Outlook.MailItem
    Dim olReply As MailItem ' Reply

    Set olReply = olItem.Reply
    olReply.Display
    SendKeys "{Right}{Right}{Right}{Right}{Right}{Right}", True
End Sub

In dem oben gezeigten Code-Beispiel wird eine Antwort-E-Mail erzeugt und mit der Funktion “Display” zur Anzeige gebracht. Dies ist wichtig, denn die Funktion SendKeys arbeitet so, als ob man eine Maus- oder Tastatureingabe vornimmt, nur mit dem Unterschied, dass die einzelnen Tastatur- oder Mauseingaben per Code übergeben werden.

Durch die Display-Aufruf wird die Antwort-Mail angezeigt und der Cursor steht automatisch am Anfang des Textes. Deswegen übergibt man in unserem Beispiel 6-mal den Parameter {Right}, um den Cursor 6 Positionen nach rechts zu bewegen. {RIGHT} steht dabei für die Pfeil-Taste nach Rechts (NACH-RECHTS) auf der Tastatur. Dadurch wird der Cursor genau vor dem “…” positioniert, so dass man gleich den Namen bzw. die Anrede eintippen kann.

Mit SendKeys lassen sich alle möglichen Tastaturbefehle realisieren. Man kann mit {F1} zum Beispiel die F1-Taste triggern oder mit {ENTER} kann man die Enter-/Return-Taste simulieren und so in der E-Mail einen Zeilenumbruch bewirken.

Der zweite Parameter vom Typ Bool, der der Funktion SendKeys übergeben werden kann, ist der optionale [wait] Parameter. In unserem Beispiel ist der Parameter nicht relevant und könnte weggelassen werden. Folgt jedoch nach SendKeys weiterer Code, dann kann der Parameter von Bedeutung sein. Denn der Parameter [wait] = true bestimmt, ob gewartet werden soll, bis SendKeys alle Tastatur-Befehle ausgeführt hat, um dann erst den nachfolgenden Code auszuführen. Ist [wait] = false, was dem Standard-Wert entspricht, dann wird der nachfolgende Code in der Funktion oder Prozedur sofort ausgeführt ohne zu warten bis alle Tastatur-Befehle ausgeführt worden sind. Das kann unter bestimmten Umständen zu unschönen Effekten führen, ist aber abhängig vom jeweiligen VBA-Code.

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert