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.

User-Input in Makros verwenden

Nicht jeder Prozess kann vollautomatisch ablaufen. In diesem Beitrag findest Du eine Möglichkeit, um User-Input in Deinem Makro weiterzuverwenden. Die Eingabe des Benutzers wird somit als Variable abgespeichert und steht jederzeit zur Verfügung.

Dazu wird innerhalb des Codes der Befehl "Application.InputBox(...)" verwendet. Die Syntax lautet wie folgt:

ApplicationInputBox

Die Bestandteile innerhalb von eckigen Klammern "[]" sind jeweils optional - lediglich "Prompt As String" ist eine Muss-Angabe. Wir gehen hier auf die ersten drei Angaben der InputBox ein. Nehmen wir an, wir möchten den Namen des Benutzers erfragen - dies ist unser "Prompt". Nachfolgende Code-Zeile ergibt das unterhalb angezeigte Eingabe-Feld.

Application.InputBox("Wie heisst Du?")

InputBox1

Eingangs habe ich erwähnt, dass die Benutzereingabe als Variable weiterverwendet werden kann. Definieren wir "UserName" als String, da es sich um einen Text handelt. Um die Eingabe direkt in dieser Variable abzuspeichern, lautet der Code demnach:

Dim UserName As String
UserName = Application.InputBox("Wie heisst Du?")

Der nächste Bestandteil der InputBox ist der Titel. Dieser wird oberhalb angezeigt, wo derzeit noch "Eingabe" steht (siehe Grafik oben).

Als letzte Angabe folgt "Default" - dies ist ein Standardtext, der bereits eingegeben und markiert ist, wenn sich das Eingabefeld in der Prozedur öffnet. Nachfolgende Code-Zeilen ergeben das unterhalb angezeigte Eingabe-Feld.

Dim UserName As String
UserName = Application.InputBox("Wie heisst Du?", "Benutzername", "Dein Name")

InputBox2

Solche InputBoxen ermöglichen es, wie eingangs erwähnt, semi-automatisierte Prozesse in VBA abzubilden. Beachte, dass der Benutzer Tippfehler machen könnte - unter Umständen wäre eine Dropdown-Liste mit vorgegebenen Auswahlkriterien sinnvoller, um die Qualität der Daten sicherzustellen.

Robotic Process Automation (RPA) und Test-Versionen

Auf unserem Blog wurden immer wieder Automatisierungsmöglichkeiten mithilfe von Excel und VBA vorgestellt und im Detail ausgeführt. Dabei haben wir uns stets innerhalb von Excel bewegt (respektive innerhalb der Microsoft Office-Umgebung). Seit Kurzem ist in Sachen Automatisierung von Arbeitsabläufen ein neuer Begriff im Umlauf - "Robotic Process Automation (RPA)". Mithilfe dieser Technologie stehen Unternehmen wie auch Privatpersonen virtuelle Mitarbeiter zur Verfügung, um Prozessabläufe über alle Anwendungen hinweg eigenständig auszuführen. Gegenüber Business Process Automation unterscheidet sich RPA insbesondere dadurch, dass nach der Inbetriebnahme keine menschliche Interaktion mehr notwendig ist. Outsourcing-Aktivitäten könnten mit der Technologie wieder ins eigene Unternehmen rückintegriert werden, da man die Prozesse im Detail bereits identifiziert und definiert hat. Generell sind die meist regelbasierten Abläufe mittels RPA-Software aufzuzeichnen, um den virtuellen Arbeiter in Betrieb zu nehmen. Dies ist also stark angelehnt an den bekannten Makro-Rekorder in VBA. Doch ist vor dem Hintergrund von RPA nicht nur von sogenannter Desktop Automation zu sprechen: Diverse Anbieter legen derzeit hohen Wert auf die Entwicklung von Machine Learning und Artificial Intelligence-Komponenten, um den Konfigurationsbedarf bei den Anwendungen weiter zu senken und "smart" auf Veränderungen reagieren zu können - das Spektrum an Möglichkeiten wird dadurch drastisch ausgeweitet.

Robotic Process Automation wird bereits vielerorts eingesetzt. Wie Maschinen im Landwirtschafts- und Industriesektor Einzug gehalten haben, kommen nun vermehrt Roboter im administrativen Bereich und für wissensbasierte Prozesse zur Anwendung. Vorläufig handelt es sich noch um ein Consulting getriebenes Geschäft, die Wissenschaft an sich hat sich noch nicht ausgiebig mit dem Thema beschäftigt. McKinsey, Gartner Group und Studien von der Oxford Universität beispielsweise stufen cirka 30 - 50 % der momentan vorhandenen Berufstätigkeiten als gefährdet ein (siehe Fersht - Don't panic, roboters are not job snatchers oder auch die bekannte Studie von Frey & Osborne - The Future of Employment: How Susceptible Are Jobs To Computerisation? aus dem Jahr 2013). Disruptive Technologien haben in der Vergangenheit stets gezeigt, dass sie zwar Jobs und bestehende Firmen und Strukturen gegenstandslos zu machen vermögen, doch haben sie im selben Atemzug neue Anforderungsprofile und Möglichkeiten mit sich gebracht. So sollte es sich auch mit RPA verhalten - die Technologie ermöglicht es, bestehende Tätigkeiten vollständig zu automatisieren und lässt uns dadurch den Fokus auf andere Themen zu legen.

Wie bereits erwähnt ist Robotic Process Automation zunächst ein Thema, das die Beratungsfirmen vorantreiben. Die zwei bekanntesten Anbieter einer RPA-Software sind Automation Anywhere und Blue Prism, welche übrigens auch an der Börse kotiert ist (siehe PRSM.L auf finance.yahoo.com). Neben diesen zwei grossen Anbietern wächst zudem WorkFusion heran, bei welchen man kostenfrei eine im Umfang reduzierte Version (RPA Express) anfordern kann. Ebenfalls eine Gratisversion bietet UiPath an - die Community Edition. Von Kofax Kapow kann man ebenfalls eine Testversion anfordern. Es gibt dazu diverse Anleitungen und Tutorials, um selbst Prozesse aufzuzeichnen und daraufhin automatisch abspielen zu lassen - analog dem Makro-Rekorder. Es lohnt sich auf jeden Fall, diese Technologie und die dadurch erschlossenen Möglichkeiten zu betrachten und für eigene, spezifische Anwendungsfälle in Betracht zu ziehen!