VBA-Makros und RPA kombinieren

Mit Robotic Process Automation (RPA) lassen sich wiederkehrende Tätigkeiten automatisieren. Dieser Aspekt ist stark verwandt mit Makros - und RPA wird durchaus als nächste Stufe von Makros angesehen (insbesondere durch den Umstand, dass jede Applikation oder Datenquelle angebunden werden kann, nicht selten mittels Interaktion über das User Interface).

Die gängigen RPA-Tools verfügen über integrierte Excel-Aktivitäten. Auf einige Möglichkeiten mit der Lösung von "Kofax" wurde in diesem Beitrag bereits eingegangen. Die Abbildung unten zeigt einige Standard-Aktivitäten in der Software "UiPath", mit der das Beispiel in diesem Beitrag erarbeitet wird:

UiPathExcelActivities

Diese Optionen lassen bereits enorm viele Tätigkeiten zu - man kann also repetitive Excel-Schritte, die ein Benutzer ausführt, auch direkt aus der RPA-Software heraus in den gesamten Arbeitsablauf integrieren. Wer jedoch bereits mit VBA vertraut ist, setzt eher auf dieses Pferd, da man sich vom (eigenen) VBA-Code beispielsweise mehr Flexibilität und weitere Vorteile verspricht. Die Entscheidung ist abhängig vom Anwendungsfall und sollte jeweils evaluiert werden. Meine Empfehlung ist jederzeit, dass man auf Stärken von angebundenen Tools setzt und RPA als Bindeglied einsetzt.

Die Daten-Extraktion

Wir bearbeiten in diesem Beitrag folgendes Beispiel: Über das Web greifen wir auf ein internes "Sales Portal" zu. Darauf sind unter anderem in Tabellen-Form bestimmte Informationen und Aktivitäten unserer Aussendienstmitarbeiter einzusehen. Die Angaben in der Tabelle "Prospecting Activities per Sales Manager" möchten wir in einem eigenen Excel-Bericht besser darstellen. Die angesprochene Tabelle sieht wie folgt aus:

ProspectingActivitiesTable

Du kannst gerne ebenfalls mit unseren Demo-Daten experimentieren, die Test-Umgebung ist unter folgenden Links abzurufen:

https://www.routinuum.ch/demo-sites/MAB/SalesPortal.html

Es ist ein Login eingerichtet, wobei man einfach mittels Klick auf den "Login"-Button auf die Seite mit den Sales Informationen gelangt (alternativ direkt auf diesen Link navigieren: https://www.routinuum.ch/demo-sites/MAB/SalesData.html).

Bei einem manuellen Prozess würden diese Angaben in eine Excel-Tabelle eingetragen oder kopiert werden. Mit einer Automatisierung in UiPath loggen wir uns direkt in das Sales Portal ein und extrahieren die Daten entsprechend. Die Sequenz in UiPath kann wie folgt gestaltet werden:

DataExtractionSequence

Mit "Write Range"-Aktivitäten in UiPath kann dann diese extrahierte Tabelle an einen beliebigen Ort in Excel geschrieben werden (siehe unten).

Kombination mit VBA zu einem gesamtheitlichen Ablauf

Nach der Daten-Extraktion wären wiederum repetitive Arbeitsschritte notwendig, um den Bericht entsprechend aufzubereiten. Insbesondere hier wurde bislang bereits oft mit Makros (VBA) angesetzt. Auch ich habe mir für dieses Beispiel ein kurzes VBA-Skript aufbereitet, das die Rohdaten und die "Actual-Werte" in einer Pivot-Tabelle aggregiert und darstellt. Das Endergebnis sieht wie folgt aus:

ProspectingActivitiesPivot

Doch wie kann man nun RPA (UiPath) und VBA miteinander kombinieren? Dem aufmerksamen Leser sind möglicherweise zwei Aktivitäten in der allerersten Abbildung aufgefallen: "Execute Macro" oder "Invoke VBA". Mit erstgenannter Aktivität werden wir hier arbeiten. Nach der "Write Range"-Aktivität, um die extrahierten Daten in die Excel-Tabelle zu schreiben, fügen wir den Schritt "Execute Macro" ein. In Anführungszeichen setzen wir den Namen des Makros ein - in meinem Fall "PrepareData". Dies sind die Aktivitäten innerhalb der Sequenz "Excel Activities / Macro" in UiPath:

ExcelActivitiesSequence

Das ist es bereits! Der Roboter-Prozess öffnet eigenständig den Browser, loggt sich in das Sales Portal ein, extrahiert die Daten aus der "Prospecting Activities"-Tabelle, transferiert sie in das Excel-File und führt das separat angelegte Makro aus. Der vollständige Ablauf kann wie folgt strukturiert sein:

RPAVBAKombinationProzess

Die erste Sequenz "Get Credentials (Login)" fragt mögliche Login-Angaben aus dem Windows Credentials Manager (Anmeldeinformationsverwaltung) ab und zieht diese Angaben sicher in den Roboter-Prozess mit ein. Ein ausführlicher Beitrag dazu haben wir als Post auf der Website der Routinuum GmbH wie auch auf LinkedIn (Englisch) veröffentlicht.

Weiterführende Überlegungen zum Beispielprozess

Ein grosser Vorteil von RPA besteht darin, dass man jede denkbare Datenquelle erschliessen kann. Angenommen, eine Ländergesellschaft ist noch nicht an das vorgestellte "Sales Portal" angebunden. Periodengerecht erhalten wir die Informationen per Email, beispielsweise mit einem beiliegenden Excel-File. Der illustrierte Ablauf kann also durch Email-Aktivitäten (z.B. Outlook) beliebig erweitert werden, sodass der Dateianhang abgespeichert wird. Mit der "Append Range"-Aktivität können diese zusätzlichen Informationen ganz einfach der bestehenden Tabelle aus der Sales Portal-Datenextraktion angehängt werden. Durch dynamische Bereiche im erstellten Makro - beispielsweise mit der Codezeile  LastRow = Range("A1").End(xlDown).Row zur Ermittlung der letzten Zeile - inkludiert das Makro auch weitere Einträge in die entsprechende Pivot-Tabelle.

Dynamische Selektoren in UiPath Studio

Wenn es einen Begriff gibt, der im Kontext von Web Automation und Robotic Process Automation (RPA) nicht ausgelassen werden kann, dann ist dies «Selektoren». Die Hauptursache von Fehlern liegt in falsch gesetzten oder alten Selektoren, welche nicht den Gegebenheiten des entsprechenden User Interface (UI) entsprechen. Um die korrekten UI Elemente anzusteuern, müssen teilweise dynamische Informationen verwendet werden. In diesem Falle wird der notwendige (dynamische) Input in einer Variable zwischengespeichert, welche als Teil des Selektors verwendet wird.

Um den Einsatz von Variablen in Selektoren (dynamische Selektoren) in UiPath Studio zu illustrieren, verwenden wir die Website «www.asvz.ch». ASVZ ist der Akademische Sportsverband Zürich, eine Plattform, auf der Studenten ein breites Angebot an anstehenden Sportaktivitäten in unterschiedlichen Lokalitäten vorfinden und buchen können. Alle Termine werden auf der Website unter «Sportfahrplan» aufgeführt. Die Sportarten können direkt in der Überschrift gefiltert werden. In diesem Beispiel suchen wir zuerst nach «Basketball». Hier wird direkt ersichtlich, dass ein dynamischer Selektor basierend auf einem initialen User Input notwendig ist:

SearchField

Zu Beginn unserer Web Automation wird der Benutzer demnach aufgefordert, die gewünschte Sportart einzugeben (z.B. Basketball). Wie oberhalb erwähnt soll diese Information in einer Variable zwischengespeichert werden, welche direkt in den Selektor eingebaut wird. Eine normale «Click»-Aktivität auf den Filter (in der Überschrift) generiert in UiPath den folgenden Selektor:

InitialSelector

Beachte, dass der Selektor spezifisch auf «Basketball» eingestellt ist. Demnach, wenn der Software-Roboter beispielsweise nach «Badminton» suchen wird, kann das UI Element nicht identifiziert werden und die Prozedur wird nach einem Standard «Timeout» von 30 Sekunden gestoppt und eine entsprechende Fehlermeldung wird ausgegeben. Um den erwähnten Selektor-Teil dynamisch zu gestalten, ist ein Rechtsklick auf das «aaname»-Element notwendig, gefolgt von «Choose variable», da die Variable bereits zuvor definiert wurde (das Resultat/die Ausgabe von der User Input-Aktivität):

InitialSelectorAAName

In der nachfolgenden Maske wird die Variable selektiert. Stelle zuvor auf jeden Fall sicher, dass der Bereich (Scope) der Variable korrekt gesetzt ist, um sie in späteren Aktivitäten ebenfalls abzurufen.

ChooseVariable

Das Resultat ist ein dynamischer Selektor, wie in der Abbildung unten dargestellt. Die Variable wird automatisch mit den notwendigen geschweiften Klammern in den gesamten Selektor integriert. Nun kann die Web Automation jeden beliebigen User Input, der einer verfügbaren Sportart entspricht, selektieren und die Daten danach filtern.

DynamicSelector

Bitte beachte, dass unvollständige Suchbegriffe und Platzhalter nicht in diesem Beitrag berücksichtigt werden. Diese könnten ebenfalls inkludiert werden, um den Selektor und den gesamten Prozess noch robuster zu gestalten.

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