Ticketsystem, Teil V

In den vorherigen Teilen dieser Beitragsreihe haben wir den Aufbau einiger Funktionen eines Ticketsystems beschrieben. Es fehlt noch der letzte Feinschliff: Wir wollen die erneuten Antworten von Kunden auf unsere als Antwort versendeten E-Mails automatisch in die Ticketverwaltung aufnehmen. Bevor wir das im nächsten Teil erledigen können, haben wir in diesem Teil noch einige Feinheiten ergänzt und werfen außerdem noch einmal einen zusammenfassenden Blick über die bisher programmierten Funktionen und die Inbetriebnahme der Ticketverwaltung inklusive der Einrichtung in Outlook. Außerdem fügen wir noch einen Dialog zur Verwaltung der Optionen der Lösung hinzu.

Einrichtung des Ticketsystems

Um das Ticketsystem einzurichten, benötigen Sie zunächst die Access-Datenbank aus dem Download zu diesem Beitrag namens Ticketsystem.accdb. Außerdem sind kleine Anpassungen an Outlook erforderlich, genau genommen am VBA-Projekt von Outlook.

Einrichtung in Outlook

Es gibt einen kurzen und einen etwas umständlicheren Weg, die für das Ticketsystem nötigen Elemente in Outlook zu integrieren. Dabei brauchen wir einige Module. Diese können Sie einzeln zum aktuellen VBA-Projekt von Outlook hinzufügen. Das bietet sich an, wenn Sie bereits änderungen am VBA-Projekt von Outlook vorgenommen haben. Wenn Sie jedoch eine jungfräuliche Instanz von Outlook nutzen, können Sie auch das komplette VBA-Projekt austauschen gegen das aus dem Download zu diesem Beitrag.

Outlook-VBA-Projekt austauschen

Wenn Sie das komplette VBA-Projekt für die Ticketverwaltung nutzen wollen, gehen Sie wie folgt vor:

  • Navigieren Sie zur Datei VbaProject.OTM. Diese finden Sie beispielsweise im Ordner C:\Users\User\AppData\Roaming\Microsoft\Outlook.
  • Benennen Sie die Datei VbaProject.OTM um, beispielsweise in _VbaProject.OTM.
  • Fügen Sie dann die Datei VbaProject.OTM aus dem Download zu diesem Beitrag in das angegebene Verzeichnis ein.
  • Anschließend starten Sie Outlook und fahren wie weiter unten unter Outlook starten beschrieben fort.

Module einzeln zu bestehendem VBA-Projekt hinzufügen

Wenn Sie Outlook starten und dann die Tastenkombination Alt + F11 drücken, öffnet sich der VBA-Editor von Outlook. In diesem finden Sie, wenn der Projekt-Explorer geöffnet ist, ein Projekt mit einem Unterordner Microsoft Outlook Objekte. Dieser Ordner stellt das Klassenmodul This-OutlookSession bereit. In diesem legen Sie eine neue Prozedur an, die wie in Bild 1 aussieht. Das erledigen Sie am einfachsten, indem Sie aus dem linken Kombinationsfeld des Codefensters den Eintrag Application und aus dem rechten Startup auswählen.

Anlegen der Prozedur, die beim Start von Outlook ausgelöst wird

Bild 1: Anlegen der Prozedur, die beim Start von Outlook ausgelöst wird

Die einzige Anweisung dieser Prozedur soll eine weitere Prozedur namens Application_Startup_Ticketverwaltung aufrufen. Diese haben wir der Zip-Datei mit den Beispieldateien unter dem Namen mdlTicketverwaltung.bas untergebracht. Kopieren Sie dieses Modul aus der Zip-Datei mit den Beispieldateien in das VBA-Projekt von Outlook, damit die Prozedur Application_Startup_Ticketverwaltung beim Start von Outlook aufgerufen werden kann.

Sie benötigen noch weitere Module im VBA-Projekt von Outlook, und zwar mdlTicketverwaltung.bas, mdlTicketverwaltung_Folders.bas, mdlTicketverwaltung_Global.bas und mdlTicketverwaltung_Outlook.bas.

Schließlich benötigen Sie noch das Klassenmodul clsFolderArchiv.cls, das Sie in der Zip-Datei mit den Beispieldateien finden. Sie können dieses ebenso wie die anderen Module einfach aus dem Windows Explorer in den Projekt-Explorer des VBA-Editors von Outlook ziehen.

Verweise zum VBA-Projekt von Outlook hinzufügen

Im VBA-Editor stellen Sie nun noch zwei Verweise ein, und zwar für die Bibliotheken Microsoft Access 16.0 Object Library und Microsoft Office 16.0 Access Database Engine Object Library.

Danach können Sie Outlook einmal neu starten. Es erscheint dann direkt der Dateiauswahl-Dialog namens Datenbankpfad auswählen. Hier wählen Sie die Datenbank Ticketsystem.accdb aus.

Outlook starten

Wenn Sie Outlook nun starten, wird die Ereignismethode Application_Startup ausgelöst. Diese ruft die Prozedur Application_Startup_Ticketverwaltung auf, die mit der Funktion DatenbankpfadHolen prüft, ob der Pfad zur Datenbank bereits in einer UserProperty innerhalb von Outlook gespeichert ist – und ob die angegebene Datei vorhanden ist. Falls nicht, erscheint ein Dateiauswahl-Dialog, mit dem der Benutzer die Datei Ticketsystem.accdb auswählen kann (siehe Bild 2). In diesem Fall wird der Pfad zur Ticketmanager-Datenbank in der UserProperty gespeichert, wo er beim nächsten Start von Outlook wieder ausgelesen werden kann.

Auswählen der Datei Ticketsystem.accdb

Bild 2: Auswählen der Datei Ticketsystem.accdb

Die Prozedur Application_Startup_Ticketverwaltung öffnet nun die Datenbank und liest den Inhalt der Tabelle tblOptionen ein, die wir weiter unten noch beschreiben.

Die Tabelle enthält im Wesentlichen Informationen darüber, welche Verzeichnisse in Outlook zum Sammeln der Kunden-E-Mails zur Bearbeitung im Ticketsystem verwendet werden sollen.

Hier sind beim ersten Aufruf in der Regel noch keine Outlook-Verzeichnisse festgelegt und somit auch noch keine Datensätze in der Tabelle tblOptionen. Dementsprechend bietet die Prozedur dem Benutzer nun die Möglichkeit, einen Outlook-Ordner auszuwählen und diesen zur Tabelle tblOptionen hinzuzufügen. Damit der Benutzer weiß, was auf ihn zukommt, erscheint nun zunächst die Meldung aus Bild 5.

Hinweis auf das anstehende Auswählen eines Verzeichnisses in Outlook

Bild 3: Hinweis auf das anstehende Auswählen eines Verzeichnisses in Outlook

Anschließend erscheint der Dialog Ordner auswählen von Outlook. Dieser zeigt alle in Outlook verfügbaren Ordner an. Wir wählen hier den dafür vorbereiteten Ordner Ticketsystem aus (siehe Bild 3). Danach wird Outlook wie gewohnt gestartet und auch bei nachfolgenden Startvorgängen müssen die Informationen nicht erneut eingegeben werden.

Auswahl des zu trackenden Outlook-Ordners

Bild 4: Auswahl des zu trackenden Outlook-Ordners

Sollten Sie den Ordner für die E-Mails für die Ticketverwaltung noch nicht angelegt haben, können Sie das nachträglich erledigen – und zwar direkt im Dialog Ordner auswählen von Outlook. Dazu klicken Sie dort auf die Schaltfläche Neu… und legen dann mit dem Dialog aus Bild 4 einen neuen Outlook-Ordner für E-Mails an.

Anlegen eines neuen Ordners in Outlook

Bild 5: Anlegen eines neuen Ordners in Outlook

ändern des Ordners in Outlook oder in der Datenbank

Es kann sein, dass Sie den Ordner in Outlook umbenennen oder das der Wert des Feldes Verzeichnis in der Tabelle tblOptionen so geändert werden, dass beide nicht mehr übereinstimmen. In diesem Fall findet die Prozedur Application_Startup_Ticketverwaltung den Outlook-Ordner nicht und zeigt die Meldung aus Bild 6 an.

Es fehlt ein Ordner, der vom Ticketsystem getrackt werden soll.

Bild 6: Es fehlt ein Ordner, der vom Ticketsystem getrackt werden soll.

Diese Funktion war in der ersten Version der Prozedur Application_Startup_Ticketverwaltung noch nicht enthalten. Die erweiterte Version finden Sie in Listing 1.

Public Sub Application_Startup_Ticketverwaltung()
     Dim db As DAO.Database, rst As DAO.Recordset
     Dim objFolder As Outlook.Folder, objFolderArchiv As clsFolderArchiv, strTicketsystemDatenbank As String
     strTicketsystemDatenbank = DatenbankpfadHolen("Ticketsystem", "Datenbankpfad")
     If Len(strTicketsystemDatenbank) = 0 Then
         MsgBox "Verbindung zur Ticketdatenbank konnte nicht hergestellt werden."
         Exit Sub
     End If
     Set db = DBEngine.OpenDatabase(strTicketsystemDatenbank, , True)
     Set rst = db.OpenRecordset("SELECT * FROM tblOptionen", dbOpenDynaset)
     Set colFolders = New Collection
     If rst.EOF Then
         MsgBox "Sie können nun ein Verzeichnis in Outlook auswählen, dessen E-Mails automatisch in das " _
             & "Ticketsystem eingelesen werden."
         Set objFolderArchiv = New clsFolderArchiv
         With objFolderArchiv
             Set objFolder = Outlook.GetNamespace("MAPI").PickFolder
             If Not objFolder Is Nothing Then
                 rst.AddNew
                 rst!Verzeichnis = objFolder.FolderPath
                 rst.Update
                 Set .Folder = objFolder
                 Set .Database = db
                 colFolders.Add objFolderArchiv
             End If
         End With
     Else
         Do While Not rst.EOF
             Set objFolderArchiv = New clsFolderArchiv
             With objFolderArchiv
                 Set objFolder = GetFolderByPath(rst!Verzeichnis)
                 If objFolder Is Nothing Then
                     MsgBox "Der in der Export-Datenbank '" & strTicketsystemDatenbank & "' angegebene Outlook-Ordner '" _
                          & rst!Verzeichnis & "' ist nicht in Outlook vorhanden. Wählen Sie diesen nun erneut aus."
                     Set objFolder = Outlook.GetNamespace("MAPI").PickFolder
                     rst.Edit
                     Verzeichnis = objFolder.FolderPath
                     rst.Update
                 End If
                 Set .Folder = objFolder
                 .AnlagenSpeichern = rst!AnlagenSpeichern
                 Set .Database = db
                 .NeuEinlesen = rst!NeuEinlesen
                 .Groesse = Nz(rst!Groesse)
             End With
             colFolders.Add objFolderArchiv
             If rst!Rekursiv Then
                 UnterordnerInstanzieren objFolder, db, Nz(rst!Groesse), rst!NeuEinlesen, rst!AnlagenSpeichern, colFolders
             End If
             rst.MoveNext
         Loop
     End If
End Sub

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access im Unternehmen:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 1.000 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar