in ,

Automatisierungen mittels VBA

Für das tägliche Arbeitsleben im Büro ist die MS-Office Produktpalette ein elementarer Bestandteil geworden. Sei es das Lesen und Verschicken von Mails mit Outlook oder das Verfassen von Dokumenten mit Word. Ein ganz zentrales und allumfassendes Tool ist Excel, ein umfangreiches Werkzeug in Bereichen wie Buchhaltung, Controlling aber auch für Routinetätigkeiten gut geeignet. Für komplexere Tätigkeiten oder kleine Applikationen wird auch gerne Access eingesetzt.

Bei der Erledigung von oft anfallenden Tätigkeiten oder der Bearbeitung mehrerer gleichartiger Dokumente fallen für den Benutzer immer wieder repetitive Arbeitsabläufe an, die in Summe die Produktivität einschränken.

Für dieses Problem gibt es in vielen Fällen eine einfache Lösung: Makros. Das sind kleine Scripts, die mit der Skriptsprache VBA (Visual Basic for Applications) geschrieben werden und in den kompletten Office-Produktkatalog integriert werden können. Hier die Vorteile im Überblick:

  • VBA ist in Excel inkludiert – es muss keine Zusatzsoftware gekauft werden und es fallen keine extra Lizenzkosten an
  • Dokumentation und einfache Bespiele durch Microsoft. Am besten hier starten.
  • Große Community im Internet für Hilfestellungen
  • Wiederholende Tätigkeiten können automatisiert und von anderen Personen übernommen werden (z.B.: Urlaubsvertretungen, Krankheitsfälle)
  • Fehleranfälligkeit sinkt, Arbeitsschritte werden nicht vergessen oder übersehen
  • Einfache repetitive Tätigkeiten können mittels Makros aufgezeichnet und immer wieder ausgeführt werden
  • Mittels ODBC können Verbindungen zu unterschiedlichen Datenbanken hergestellt und Abfragen ausgeführt/aktualisiert werden, umso beispielsweise das Berichtswesen zu vereinfachen
  • Vorlagen können mittels Datenbankabfragen befüllt werden

 

Im Folgenden zeigen wir drei vereinfachte Beispiele mit verschiedenen Office-Produkten.

Excel

Ein Excel Makro lässt sich ganz einfach aufzeichnen. Im Menü unter ANSICHT –> Makros, oder über die Entwicklertools.

Dieses einfache Beispiel zeig, welcher VBA-Code entsteht, wenn man ein Makro aufzeichnet, welches das aktuelle Datum in Feld C3 einfügt:

Sub DatumEinfuegen()
   Range("C3").Select
   ActiveCell.FormulaR1C1 = "=NOW()" 
End Sub

Bestehende Makros können nach dem Aufzeichnen auch zu komplexeren VBA Code erweitert werden. Eine kleine Änderung des obigen Makros beispielsweise liest den Text aus einem Textfile aus und schreibt ihn in die Zelle C3:

Sub TextEinfuegen ()
   Range("C3").Select
   With CreateObject("Scripting.FileSystemObject")
      ActiveCell.Value = .OpenTextFile("C:\testfile.txt", 1).readall
   End With
End Sub

Access

Access ist ein praktisches Tool für die schnelle Erstellung von Formularen oder die Eingabe von Daten. Man kann damit auch Oberflächen erstellen, um AnwenderInnen die Bedienung zu erleichtern.

Der folgende VBA-Code macht das gleiche wie das erste Beispiel in diesem Artikel, mit dem Unterschied, dass das Excel-File direkt erstellt wird. Es soll ein Beispiel dafür sein, dass aus Access heraus auch sehr einfach Daten in Excel exportiert werden können.

Private Sub Datum_Button_Click()
   Dim xlApp As Object, xlWB As Object
   Set xlApp = CreateObject("Excel.Application")
   xlApp.Visible = True
   Set xlWB = xlApp.Workbooks.Add
      xlWB.Sheets(1).Select
      xlWB.Sheets(1).Range("C3") = "=NOW()"
      xlWB.Sheets(1).Columns("C:C").EntireColumn.AutoFit
End Sub

Anstatt nur das aktuelle Datum zu setzen, können auch komplexere Listen erstellt oder mithilfe eines Formulars Filter gesetzt werden. So kann man auch nur Teilmengen einer Tabelle exportieren. Um das Layout und die Formatierungen in den Excel-Files kann man sich ebenfalls im VBA-Code kümmern oder aber vorgefertigte Vorlagen erstellen, die nur mehr mit den Daten befüllt werden müssen. Darüber hinaus ist es auch möglich, während des Exports über Access, Makros in den Excel-Vorlagen auszuführen. Dafür genügt ein einfacher Aufruf:

xlApp.Run "DatumMakro”

Ein weiterer praktischer Anwendungsfall ist der umgekehrte Weg, nämlich Excel Dateien in Access zu importieren. So können Daten aus mehreren Excel-Files (z.B. mehrere gleichartige Dateien) zusammengeführt und bereinigt werden.

Beispiele dafür wären die Bereinigung von Duplikaten, die Anreicherung mit anderen Daten oder ein Test-System um Daten zu sichten, bevor sie in eine andere Datenbank geladen werden. Sind die Daten einmal aufbereitet, können sie auch in Tabellen eines anderen Datenbanksystems eingefügt werden. Die Verbindung kann über das Menü unter EXTERNE DATEN eingerichtet werden. Hier wird die Möglichkeit geboten, sich über den ODBC-Standard zu allen möglichen Datenbanksystemen zu verbinden.

Word

In Microsoft Word sind Makros nicht so weit verbreitet wie in den anderen vorgestellten Office-Produkten. Doch auch hier können sehr viele nützliche Erweiterungen erstellt werden, wie zum Beispiel Dokumente zusammenführen, automatisiert Informationen heraussuchen oder das Befüllen von Formular-Vorlagen beschleunigen. Da der gleiche Code in allen MS-Office Produkten funktioniert, ist auch ohne Weiteres die Kombination von Word, Excel, Access und anderen Office-Produkten für ein Vorhaben möglich.

Hier wollen wir noch ein ganz einfaches Beispiel für eine Funktion zeigen, die mit wenigen Code-Zeilen ein nützliches und zeitsparendes Feature zur Verfügung stellt. Mit dem folgenden Makro können aus dem Dokument alle Hyperlinks entfernt werden:

Sub HyperlinksEntfernen()
   Dim x
   For Each x In ActiveDocument.Hyperlinks
      Selection.Range.Hyperlinks(1).Delete
   Next x
End Sub

Dies sind nur einige wenige Beispiele, wie man sich mit relativ einfachen Methoden die Arbeit erleichtern kann. Mit ein bisschen Übung werden Sie schon bald auch komplexere Lösungen erstellen können. Es zahlt sich aus, es zu versuchen.

Abkürzungen und Erklärungen

Dashboards – Die Kunst der modernen Datenvisualisierung