Outlook-Termine aus Excel erstellen

Mit VBA können nicht nur in Excel selbst Arbeitsschritte automatisiert werden, sondern es lassen sich auch andere MS Office-Produkte wie Outlook anbinden. Dieser Beitrag illustriert, wie aus einer Excel-Tabelle basierend auf einzelnen Zellinhalten ein Outlook-Termin erstellt werden kann.

Um die Funktionalitäten zu erschliessen, ist die Microsoft Outlook Object Library in VBA zu aktivieren. Gehe dafür wie folgt vor:
Öffne die VBA-Umgebung, indem Du entweder einen Rechtsklick auf ein bestehendes Tabellenblatt machst → "Code anzeigen..."oder mit der Tastenkombination Alt + F11. Unter "Extras" findest Du dann "Verweise", wie im Screenshot unten illustriert.

VBAVerweise

Suche da nach "Microsoft Outlook 16.0 Object Library" und aktiviere diesen Eintrag. Beachte: Die Version kann abhängig von Deiner MS Office Installation sein.

MOfficeObjLibrary

Die Excel-Tabelle zur Erstellung von Outlook-Terminen habe ich wie folgt aufgebaut:
OutlookTerminFile

Dem Benutzer stehen im oberen Bereich Eingabefelder zur Verfügung, welche sowohl als Steuerungsfelder für den effektiven Outlook-Termin dienen, aber auch die Texte unterhalb wie die "Anschrift" beeinflussen (Du = Lieber/Liebe; Sie = Sehr geehrter Herr/sehr geehrte Frau). Dies kann mit Wenn-Dann-Formeln erreicht werden und den Ablauf weiter optimieren, ist aber nicht zwingend. Zudem habe ich drei Sektionen (Einleitung - A; Hauptteil - B; Abschluss - C) in den Zellen 21, 23 und 25 eingepflegt, um die Email weiter zu strukturieren. Sämtliche Angaben werden durch das Makro weiterverarbeitet und an die entsprechenden Stellen des Termins als Variablen weitergereicht.

Lege nun in der VBA-Umgebung (siehe oben) ein neues Modul an und setze folgenden Beispielcode ein:

Sub TerminErstellen()

Dim OL As Outlook.Application, Appoint As Outlook.AppointmentItem, ES As Worksheet, WB As Workbook

Set WB = ThisWorkbook
Set TP = WB.Sheets("Terminplanung")
Set OL = New Outlook.Application

'Load Variables
Recipient = TP.Cells(3, 2).Value
DayMeeting = TP.Cells(9, 2).Value
StartTime = TP.Cells(10, 6).Value
EndTime = TP.Cells(11, 6).Value
Location = TP.Cells(12, 2).Value
Project = TP.Cells(13, 2).Value
Subject = TP.Cells(17, 2).Value
Greeting = TP.Cells(19, 2).Value
BodyA = TP.Cells(21, 2).Value
BodyB = TP.Cells(23, 2).Value
BodyC = TP.Cells(25, 2).Value
FinishA = TP.Cells(27, 2).Value
FinishB = TP.Cells(28, 2).Value

Set Appoint = OL.CreateItem(olAppointmentItem)
With Appoint
.Subject = Subject
.Start = StartTime
.End = EndTime
.Location = Location
.AllDayEvent = False
.Body = Greeting & Chr(10) & Chr(10) & BodyA & Chr(10) & Chr(10) & BodyB & Chr(10) & Chr(10) & BodyC & Chr(10) & Chr(10) & FinishA & Chr(10) & FinishB
.Save
End With

Set OL = Nothing

End Sub

Zuoberst werden die Objekte bestimmt und die Variablen geladen (das Tabellenblatt "Terminplanung" wird als "TP" deklariert, die Inhalte für beispielsweise den Empfänger oder den Betreff werden aus den Zellen B3 respektive B17 ausgelesen).
Im unteren Bereich (ab "Set Appoint") wird das effektive Outlook-Objekt - der Termin - erstellt, mit sämtlichen Angaben. Beachte: Hier ist aktuell kein Empfänger eingefügt, was für Testzwecke dazu führt, dass der Termin in Deinem eigenen Kalender angelegt wird. Du findest zu diesem AppointItem-Objekt weitere Eigenschaften unter diesem Link:

https://docs.microsoft.com/en-us/office/vba/api/outlook.appointmentitem#properties

Unter .Body siehst Du eine Zusammensetzung aus diversen Elementen. Mit "Chr(10)" werden Zeilenumbrüche eingefügt, um die Email besser zu strukturieren, das Resultat ist in der letzten Abbildung in diesem Blog ersichtlich. Die beiden Abbildungen unten illustrieren den erstellten Termin mit diesem Makro - sowohl für die Kalenderübersicht als auch wie erwähnt die zusätzlichen Informationen in der Email selbst.

OutlookTerminOverview

OutlookTerminDetails

AI Computer Vision in RPA

Virtuelle Desktop Infrastrukturen (VDIs) rund um Citrix, VMware oder Windows Remote Desktop stellen für Robotic Process Automation (RPA) einige Herausforderungen dar. Im Generellen setzt RPA auf sogenannte Selektoren, die zugrundeliegende Eigenschaften von User Interfaces (UI) und deren Elemente benutzen. Textfelder und Buttons in nativen Desktop-Systemen werden in dieser Manier identifiziert und korrekt gesetzte Einstellungen führen zu verlässlichen und robusten Prozeduren. Das UI, das wir in virtuellen Umgebungen angezeigt bekommen, ist lediglich ein Bild, das vom Remote Desktop her übermittelt wird. In diesem Falle können keine Selektoren identifiziert werden. Bestrebungen zur Automatisierung laufen deshalb auf Optical Character Recognition (OCR) oder «Image Matching» hinaus. Diese Methoden sind nicht gleich verlässlich wie die beschriebenen Selektoren, doch können dennoch positive Resultate erzielt werden. Allerdings gilt es zu beachten, dass bereits kleine Anpassungen des UIs oder bei der Verwendung einer anderen Bildschirmauflösung Ungenauigkeiten und Fehler entstehen können, die die Automatisierung hindern.

Mit «AI Computer Vision» von UiPath werden diese Herausforderungen gemeistert. Ein Algorithmus (1) ermöglicht menschenähnliche Erkennung von User Interfaces, durch «Benutzung einer Mischung aus AI, OCR, fuzzy matching von Texten und einem Anker-System, das alles zusammenhält». Als Folge davon ermöglichen die Aktivitäten dem Software-Roboter die visuelle Identifizierung von übermittelten Elementen des Remote Desktops. Demnach setzt AI Computer Vision nicht auf Image Matching, was die automatisierten Prozessschritte im Workflow resistent gegen Interface Anpassungen oder einer veränderten Bildschirm-Auflösung. Zusätzlich zu den oben erwähnten Möglichkeiten können die Computer Vision Aktivitäten für die Element-Erkennung in anderen Fällen wie z.B. in SAP, Silverlight, PDFs oder für Bilder im Generellen.

Um die Computer Vision Aktivitäten in UiPath Studio einsetzen zu können, ist das offizielle Package von UiPath «UiPath.ComputerVision.Activities» hinzuzufügen. Eine Demo zu AI Computer Vision kann unter diesem Link abgerufen werden:

(1) Der Algorithmus ist bereits in der Software integriert und wird auch von UiPath selbst verbessert, nicht vom User. Es benötigt demnach keine Vorlaufzeit und kein individuelles Anlernen des Machine Learning-Algorithmus, bevor man die Aktivitäten selbst anwenden kann. Falls jemand aus der UiPath Community ein Element in einer virtuellen Umgebung entdeckt, welches noch nicht identifizierbar ist, kann das Element oder der Bereich mit einer einfachen Funktion an UiPath gemeldet werden. Dies verbessert AI Computer Vision für alle Entwickler und Anwender.

Routinuum GmbH - Ihr Integrationspartner?

Unser Unternehmen ist spezialisiert in der Konzeption und Umsetzung von RPA-Projekten und ein UiPath Partner. Wir begleiten unsere Kunden in allen Projektphasen, um die Möglichkeiten dieser Technologie langfristig in der jeweiligen Organisation zu verankern. Haben wir Ihr Interesse geweckt? Kontaktieren Sie uns gerne unverbindlich, um mehr Informationen zum Thema zu erhalten oder die Einsatzmöglichkeiten in Ihrem Unternehmen zu besprechen.

Roman Tobler, +41 76 464 42 84, roman.tobler@routinuum.ch

Routinuum GmbH - Challenge Routine. - www.routinuum.ch

RPA Software-Komponenten

In diesem Beitrag wird der grundsätzliche Aufbau einer Robotic Process Automation-Software und deren Komponente weiter aufgebohrt. Ein RPA-Werkzeug besteht in der Regel aus drei verschiedenen Teilen, welche nachfolgend detailliert vorgestellt werden:

  • Entwicklungsumgebung (Studio)
  • Ablaufumgebung (Orchestrator / Steuerzentrale)
  • "Software-Roboter", mithilfe deren die Prozesse auf einem Rechner oder Server ausgeführt werden

Jede Komponente hat eigene Eigenschaften und wird in einer grösseren Installation von unterschiedlichen Benutzern benutzt und bedient. Somit werden entsprechende Rechte & Zugriffe verwaltet, um vorbeugend einigen IT-Sicherheitsaspekten gerecht zu werden. Als erstes wird das Studio zur Entwicklung der "Roboterprozesse" vorgestellt.

RPA - Software-Komponenten

Entwicklungsumgebung (Studio)

Die Workflows und Aktivitäten werden in einer Studio-Software mittels Drag-and-Drop-Funktionalität zusammengestellt und entsprechend konfiguriert. Alternativ - oder ergänzend - können (Teil-)Abläufe direkt von einem User ausgeführt und zugleich mit einem Rekorder aufgezeichnet werden - analog dem Makro Rekorder in VBA, wie man ihn vielleicht bereits aus einem Produkt der Microsoft Office-Palette kennt. Die entwickelten Prozesse können jederzeit mittels Debugging Schritt für Schritt ausgeführt und getestet werden. Eine gewisse Skalierbarkeit beim Automatisieren von Prozessen ist ebenfalls gegeben: (Teil-)Prozesse in anderen Abläufen können als sogenannte "Snippets" wiederverwendet werden. Ein Entwickler kann so gleiche Arbeitsschritte in einen anderen Prozess integrieren.

Obschon die Prozesse grundsätzlich von Entwicklern basierend auf den fachlichen Anforderungen erarbeitet und aufgezeichnet werden, führt ein Developer diese nicht selbst in der Produktionsumgebung aus. Eine explizite Trennung der Development, UAT und Live-Umgebung wird klar empfohlen. Um das Potenzial des RPA-Werkzeuges vollumfänglich zu nutzen und Security-Aspekten gerecht zu werden, sind weitere Software-Komponenten notwendig.

Live-Umgebung (Orchestrator / Steuerzentrale & Robot)

In der Live-Umgebung ist einerseits eine Steuerzentrale (Orchestrator / Management Konsole) vorzufinden. Fertiggestellte Prozesse werden auf diese Plattform hochgeladen und dort genehmigt - mit entsprechendem Versionsverlauf. In dieser Steuerzentrale lassen sich Benutzer, Rechte sowie alle Prozesse und Geräte verwalten. Zudem können Abläufe manuell gestartet oder aber auch Terminplanungen für die automatische Ausführung eingepflegt werden. Logs und generelle Monitoring-Funktionen geben Auskunft über die Roboter-Aktivitäten und helfen sowohl bei der Verbesserung der Prozesse wie auch beim Auditing.

Die dritte Komponente einer RPA-Software besteht aus den "Software-Robotern" selbst. Es handelt sich keineswegs um physische Roboter, die beispielsweise in einer Produktionshalle vorzufinden sind. Sehr vereinfacht gesagt imitiert die Software die Maus- und Tastaturbefehle, die ein Benutzer bei der Ausführung des Prozesses durchführt. Eine wichtige Unterscheidung besteht darin, dass es begleitete und unbegleitete Roboter (attended/unattended) gibt. Ein begleiteter Roboter wird auf dem Gerät des Benutzers ausgeführt und im Normalfall durch den User selbst gestartet. Der Nutzer wird somit spezifisch unterstützt, der Roboter benötigt jedoch Input und die Entscheidungen des Benutzers. Ein unbegleiteter Roboter arbeitet hingegen im Hintergrund oder gar auf einem Server. Die Prozesse werden basierend auf verschiedenen Ereignissen oder aufgrund der Scheduling-Möglichkeiten in der Steuerzentrale automatisch gestartet. Bei der unbegleiteten Robotic Process Automation werden die Aktivitäten im Hintergrund ausgeführt, somit ist die Geschwindigkeit bei der Ausführung zudem höher, da die Elemente nicht zusätzlich am Bildschirm des Benutzers dargestellt werden müssen. Je nach Prozess ist zu evaluieren, welche Art von Software-Roboter geeignet ist. Es ist zudem denkbar, dass begleitete Roboter in einer ersten Phase implementiert werden, damit sich die User und die gesamte Organisation an die neuen Möglichkeiten und den Umgang mit den Software-Robotern gewöhnen können. Dieses Vorgehen kann die Akzeptanz fördern und sich somit positiv auf das Change Management und die Kommunikation innerhalb des Unternehmens auswirken.

Abschliessende Überlegungen und Anmerkungen

Auf dem Markt finden sich eine Vielzahl an RPA-Software-Anbieter und die Komponenten werden je nach Produkt unterschiedlich benannt. Im Grundsatz sind die Plattformen jedoch gleich aufgebaut und haben ihre relativen Stärken und Schwächen. Wir (mit der Firma Routinuum) sind spezialisierter Integrationspartner der RPA-Software von UiPath. Die drei Komponenten heissen da UiPath Studio, UiPath Orchestrator und UiPath Robot. Die obige Darstellung der Komponenten ermöglicht ein genaueres Verständnis einer RPA-Software. In der effektiven Umsetzung eines RPA-Projektes kann die Architektur etwas detaillierter sein und richtet sich nach den Anforderungen des Unternehmens.