{"id":55000532,"date":"2007-12-01T00:00:00","date_gmt":"2021-02-11T21:19:13","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=532"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Outlook_2007_als_ProjektzeiterfassungsFrontend","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Outlook_2007_als_ProjektzeiterfassungsFrontend\/","title":{"rendered":"Outlook 2007 als Projektzeiterfassungs-Frontend"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/5d895db1d83d4ccb9a672ccecc05d1cd\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Die Projektzeiterfassung leidet meist darunter, dass man seinen Pflichten nicht nachkommt und seine Zeiten nicht pflegt. Das ist auch verst&auml;ndlich: Heutzutage muss sich der Anwender mit immer mehr Tools herumschlagen und ist beinahe mehr mit der Dokumentation seines Tuns als mit seiner Arbeit besch&auml;ftigt. Da w&auml;re es doch sch&ouml;n, wenn man zwei Fliegen mit einer Klappe schlagen k&ouml;nnte &#8211; etwa, indem man die in Outlook eingetragenen Termine und mehr direkt in die Projektzeiterfassung &uuml;bertr&auml;gt.<\/b><\/p>\n<p>Outlook bietet grunds&auml;tzlich nicht alles, was eine Projektzeiterfassung ausmacht: So kann man dort eigentlich keine Projekte festlegen und auch keine T&auml;tigkeiten mit Aufgaben verkn&uuml;pfen. Diese drei Elemente machen n&auml;mlich i,m Kontext dieses Beitrags die Erfassung von Projektzeiten aus: Zu einem Projekt gibt es mehrere Aufgaben und jede Aufgabe kann mit einer oder mehreren T&auml;tigkeiten erledigt werden. Na gut, unter Outlook gibt es immerhin das Aufgaben-Element. Aber was ist mit Projekten und T&auml;tigkeiten Wie bildet man diese nach und vor allem: Wie verkn&uuml;pfen Sie diese miteinander<\/p>\n<p>K&uuml;mmern wir uns zun&auml;chst um die Projekte. In einer Anwendung wie Outlook haben Projektinformationen eigentlich nichts zu suchen und auch der allgemeine Mitarbeiter braucht nur zu wissen, welche Aufgaben in Zusammenhang mit einem Projekt anfallen. Also reicht eine M&ouml;glichkeit aus, Projekte in irgendeiner Form aufzulisten und diesen Aufgaben zuzuweisen &#8211; denn die sind ja, wie oben besprochen, als einziges Element standardm&auml;&szlig;ig schon in Outlook vorhanden. Zu einem Projekt geh&ouml;ren mehrere Aufgaben. Welcher Analogieschluss l&auml;sst sich daraus f&uuml;r die Elemente von Outlook ziehen Aufgaben sind im Aufgabenordner enthalten. Ein Aufgabenordner kann aber, wie auch Mail- oder Kontaktordner, einen oder mehrere, auch hierarchisch verschachtelte Unterordner besitzen. Damit w&auml;re das Projekte-Problem gel&ouml;st: Sie legen einfach im Aufgabenordner einen Unterordner namens Projekte an und in diesem f&uuml;r jedes Projekt einen weiteren Ordner.<\/p>\n<p>Das sieht dann in der Ordnerliste von Outlook, die sich f&uuml;r solche Ansichten am besten eignet, etwa wie in Bild 1 aus. Diese Ansicht erhalten Sie &uuml;ber <b>Ansicht|Navigationsbereich|Normal <\/b>und anschlie&szlig;endes Anklicken des Eintrags <b>Ordnerliste<\/b>.<\/p>\n<div class=\"image\">\n    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_05\/OutlookFrontend-web-images\/pic001_opt.jpeg\" alt=\"pic001.tif\" \/>\n<\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 1: Projektordner und darin enthaltene Aufgaben<\/span><\/b><\/p>\n<\/div>\n<p>Hat man einmal ein paar Projektordner angelegt, kann man direkt die passenden Aufgaben &#8211; nat&uuml;rlich inklusive geplantem Fertigstellungsdatum &#8211; dort ablegen. Projekte, Aufgaben &#8230; fehlen noch die T&auml;tigkeiten. Eine T&auml;tigkeit ist ein Element, das durch die Beschreibung der T&auml;tigkeit selbst sowie weitere Informationen, vornehmlich Start- und der Endzeit, gekennzeichnet ist. Richtig &#8211; die Beschreibung passt genau auf einen Outlook-Termin. Im Betreff legen Sie eine &uuml;berschrift fest, in der Beschreibung gegebenenfalls weitere Informationen, und zwei weitere Felder dienen zum Eingeben des Start- und des Endzeitpunkts, aus denen man letztlich die Dauer ermittelt.<\/p>\n<p>Das einzige Problem ist, dass sich ein Termin nicht so leicht einer Aufgabe zuordnen l&auml;sst wie eine Aufgabe einem Projektordner. Die L&ouml;sung dieses Problems betrachten wir jedoch weiter unten. Bis dahin sei zumindest verraten, wie der Benutzer Termine beziehungsweise T&auml;tigkeiten anlegen kann, die mit einer bestimmten Aufgabe verkn&uuml;pft sind: Er wechselt dazu von der in Bild 1 gezeigten Ansicht mit einem Klick auf die Schaltfl&auml;che <b>Kalender <\/b>des Navigationsbereichs und aktiviert dann mit <b>Ansicht|Aufgabenleiste|Normal <\/b>die Aufgabenleiste. Diese zeigt je nach Einstellung beispielsweise die demn&auml;chst fertig zu stellenden Aufgaben an, was in diesem Fall Voraussetzung ist (siehe Bild 2): Eine solche Aufgabe l&auml;sst sich n&auml;mlich per Drag &amp; Drop mit der Maus auf den Zeitplan des aktuellen Tages ziehen und &uuml;bernimmt einige Eigenschaften in Textform in die Terminbeschreibung (siehe Bild 3). Der Termin hat nun einen oberfl&auml;chlichen Bezug, aber keine wirkliche Beziehung zu der Aufgabe, aus der er entstanden ist.<\/p>\n<div class=\"image\">\n    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_05\/OutlookFrontend-web-images\/pic002_opt.jpeg\" alt=\"pic002.tif\" \/>\n<\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 2: <br \/>Neue T&auml;tigkeiten legen Sie durch Ziehen von Aufgaben in den Kalender an.<\/span><\/b><\/p>\n<\/div>\n<div class=\"image\">\n    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_05\/OutlookFrontend-web-images\/pic003_opt.jpeg\" alt=\"pic003.tif\" \/>\n<\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 3: Ein Termin, der durch Ziehen einer Aufgabe in den Kalender erzeugt wurde.<\/span><\/b><\/p>\n<\/div>\n<p><b>Synchronerfassung<\/b><\/p>\n<p>Bis jetzt hat der Beitrag noch nicht viel mit Access zu tun, was sich nun &auml;ndern wird: Wie Sie vielleicht wissen, ist Outlook zwar gut in der Erfassung von Terminen, Kontakten et cetera, aber es bringt zum Beispiel keine Werkzeuge mit, um die im Verlauf eines Tages oder eines Projekts angefallenen Daten auszuwerten und gegebenenfalls in Druckform aufzubereiten (es kann prima Terminpl&auml;ne und Telefonlisten drucken, aber das ist ein anderes Thema).<\/p>\n<p>Hier kommt Access ins Spiel: Wenn man schon die ganzen Projektzeit-Daten in Outlook erfasst, muss es doch einen Weg geben, diese gleichzeitig in die Tabelle einer passenden Datenbank zu schreiben, die Sie unter dem Namen <b>Projektzeiterfassung.mdb <\/b>in den Beispieldateien zu diesem Beitrag finden.<\/p>\n<div class=\"abbildung\">\n<p class=\"tabellenkopf\">Voraussetzungen\/Vorbereitung<\/p>\n<p>Outlook 2007 ist ein Muss f&uuml;r den Einsatz dieser Anwendung, da es einige Objekte und Ereigniseigenschaften mit sich bringt, ohne die das automatisierte Nachverfolgen der &auml;nderungen an Projektordnern, Aufgaben und T&auml;tigkeiten und das damit verbundene Eintragen der Daten in eine Datenbank nicht m&ouml;glich w&auml;re. Es gibt aber noch weitere Voraussetzungen:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Sie importieren die vier Module <b>ThisOutlookSession.cls<\/b>, <b>clsTasks.cls<\/b>, <b>mdlGlobal.bas <\/b>und <b>mdlOutlook.bas <\/b>in das VBA-Projekt. Den Inhalt von <b>ThisOutlookSession.cls <\/b>kopieren Sie komplett in die gleichnamige standardm&auml;&szlig;ig vorhandene Klasse (in deutschen Versionen k&ouml;nnte ihr Name auch <b>DieseOutlookSitzung <\/b>hei&szlig;en). Zum Importieren ziehen Sie einfach die passenden Dateien aus dem Windows Explorer in den Projekt-Explorer im VBA-Editor von Outlook (<b>Strg + R<\/b>).<\/li>\n<li class=\"aufz-hlung\">Sie m&uuml;ssen f&uuml;r das Outlook-VBA-Projekt einen Verweis auf die passende DAO-Bibliothek festlegen.<\/li>\n<li class=\"aufz-hlung\">Stellen Sie die Konstante <b>cStrDB <\/b>auf den Pfad der Datenbank <b>Projektzeiterfassung.accdb\/.mdb <\/b>ein.<\/li>\n<li class=\"aufz-hlung\">Stellen Sie die Sicherheitseinstellungen von Outlook so ein, dass es die Ausf&uuml;hrung von Makros zul&auml;sst!<\/li>\n<li class=\"aufz-hlung\">Sie sollten alle, aber auch wirklich alle Routinen mit einer Fehlerbehandlung ausstatten. Hilfe bietet Ihnen dabei die Toolsammlung MZ-Tools (siehe auch Beitrag <b>Programmierhilfe<\/b>, Shortlink 450). Die beim Start von Outlook in der Ereignisprozedur <b>Application_Startup <\/b>instanzierten Variablen werden n&auml;mlich bei unbehandelten Fehlern geleert; somit erfolgt im Anschluss kein &uuml;bertragen der Daten von Projektordnern, Aufgaben und T&auml;tigkeiten an die Datenbank mehr. In den Beispielmodulen k&ouml;nnen Sie sich ansehen, wie eine vollst&auml;ndige Fehlerbehandlung aussieht.<\/li>\n<\/ul>\n<\/div>\n<p>Outlook 2007 bietet immerhin einige Ereignisse, die mit den verschiedensten Ordnern und Elementen zusammenh&auml;ngen und &#8211; so viel sei vorweggenommen &#8211; teilweise nicht ganz unkompliziert sind. Nun denn: Schauen wir uns an, was denn bei Verwendung des Projektzeiterfassungs-Frontends namens Outlook so alles erfasst werden m&uuml;sste:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Wenn der Benutzer ein neues Projekt (sprich: einen Aufgabenordner) anlegt, sollte dieses ebenfalls in der Tabelle <b>tblProjekte<\/b> gespeichert werden. Andersherum w&auml;re ein automatisches Anlegen des passenden Ordners beim Hinzuf&uuml;gen eines Projektdatensatzes in der Datenbank sinnvoll.<\/li>\n<li class=\"aufz-hlung\">In beiden F&auml;llen sollte man eine Beziehung herstellen &#8211; etwa in Form einer gemeinsamen ID. Dazu verwendet man praktischerweise die ID des Access-Datensatzes, die noch an geeigneter Stelle im Outlook-Ordner gespeichert werden muss. Mangels Alternativen kommt hier die Eigenschaft <b>Beschreibung <\/b>(VBA: <b>Description<\/b>) zum Zuge. Beim Anlegen des Projekts in der Datenbank sollte diese Eigenschaft also die neue <b>ProjektID<\/b> erhalten.<\/li>\n<li class=\"aufz-hlung\">Eine neue Aufgabe innerhalb eines Projekts legt der Benutzer beispielsweise an, indem er den Projektordner markiert und doppelt auf die Aufgabenliste klickt. Diese Aufgabe sollte ebenfalls in Form eines Datensatzes der Tabelle <b>tblAufgaben<\/b> in der Datenbank verewigt werden. Auch hier gilt: Die Aufgaben-ID des neuen Datensatzes soll mit dem passenden Outlook-Element gespeichert werden. Gl&uuml;cklicherweise besitzen alle Elemente wie Mails, Termine oder Aufgaben die <b>BillingInformation<\/b>-Eigenschaft, die sonst wohl nie ben&ouml;tigt wird. Also schreibt man die Aufgaben-ID hier herein.<\/li>\n<li class=\"aufz-hlung\">Fehlt noch der Bezug zum Projekt: Nat&uuml;rlich muss beim Anlegen der Aufgabe auch die ID des passenden Projekts ber&uuml;cksichtigt und in der Tabelle <b>tblAufgaben <\/b>gespeichert werden.<\/li>\n<li class=\"aufz-hlung\">Legt der Benutzer auf oben genannte Weise eine neue T&auml;tigkeit an, wird diese nat&uuml;rlich ebenfalls in der Datenbank gespeichert und zwar in der Tabelle <b>tblTaetigkeiten<\/b>. Die T&auml;tigkeits-ID des neuen Datensatzes findet wiederum Platz in der <b>BillingInformation<\/b>-Eigenschaft. Schwierig wird es hier, die Beziehung zwischen T&auml;tigkeit und Aufgabe herzustellen, also die Aufgabe zu ermitteln, auf der die T&auml;tigkeit basiert.<\/li>\n<\/ul>\n<p>Dies sind die Aktionen, die beim Anlegen von Elementen zu beachten sind. Es gibt noch eine Reihe weiterer Aktionen, die etwa durch das &auml;ndern, Verschieben oder L&ouml;schen von Elementen ausgel&ouml;st werden. Dies sind im Einzelnen:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Umbenennen eines Projektordners: Aktualisieren von <b>tblProjekte<\/b><\/li>\n<li class=\"aufz-hlung\">&auml;ndern von Eigenschaften einer Aufgabe: Aktualisieren von <b>tblAufgaben<\/b><\/li>\n<li class=\"aufz-hlung\">&auml;ndern von Eigenschaften einer T&auml;tigkeit: Aktualisieren von <b>tblTaetigkeiten<\/b><\/li>\n<li class=\"aufz-hlung\">Verschieben einer Aufgabe in einen anderen Ordner: Aktualisieren von <b>tblAufgaben<\/b><\/li>\n<li class=\"aufz-hlung\">L&ouml;schen eines Projektordners: F&uuml;hrt nicht zum L&ouml;schen eines Datensatzes, sondern zum Eintragen des L&ouml;schdatums in ein geeignetes Feld des Datensatzes. Sollte nur m&ouml;glich sein, wenn der Projektordner keine Aufgaben enth&auml;lt.<\/li>\n<li class=\"aufz-hlung\">L&ouml;schen einer Aufgabe: wie bei Projekten. Sollte nur m&ouml;glich sein, wenn es keine korrespondierenden T&auml;tigkeiten zur Aufgabe gibt.<\/li>\n<li class=\"aufz-hlung\">L&ouml;schen einer T&auml;tigkeit: wie bei Projekten<\/li>\n<\/ul>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Ereignisreich<\/p>\n<p><!--30percent--><\/p>\n<p>Das sch&ouml;ne an Outlook gegen&uuml;ber allen anderen Mail-Clients und PIM-Programmen ist, dass es mit VBA steuerbar ist und &#8211; noch viel besser &#8211; auch noch die M&ouml;glichkeit bietet, Ereignisse von Objekten abzufangen und mit eigenem Code zu versehen. Einen kleinen Eindruck davon haben Sie bereits im Beitrag <b>Outlook-Objekte in Access speichern <\/b>(Shortlink 500) erhalten, nun geht es an den knallharten Praxiseinsatz.<\/p>\n<p><b>Projektordner in Projektdatens&auml;tze <br \/>umwandeln<\/b><\/p>\n<p>Als Erstes k&uuml;mmern Sie sich um die Projektordner: Jedesmal, wenn der Benutzer einen neuen Ordner anlegt, soll Outlook dessen Informationen in der Tabelle <b>tblProjekte <\/b>speichern. Ein Projekt entspricht ja, wie weiter vorne erw&auml;hnt, einem Aufgabenordner in Outlook. Da die Benutzer vermutlich auch noch andere Aufgabenordner als die f&uuml;r Projekte ben&ouml;tigen, erstellen Sie f&uuml;r die Projektordner einen speziellen &uuml;bergeordneten Aufgabenordner. Outlook sollte beim Start pr&uuml;fen, ob der Projektordner schon vorhanden ist und ihn gegebenenfalls anlegen. Dazu ben&ouml;tigen Sie zun&auml;chst eine passende Objektvariable, die in diesem Fall mit dem Schl&uuml;sselwort <b>WithEvents <\/b>deklariert wird. Auf diese Weise k&ouml;nnen Sie, &auml;hnlich wie bei Formularen oder Steuerelementen, Ereignisprozeduren schreiben, die beim Arbeiten mit diesem Element ausgel&ouml;st werden:<\/p>\n<pre>Dim WithEvents objProjects As Outlook.Folders<\/pre>\n<p>Um diese Zeile einzugeben, m&uuml;ssen Sie zun&auml;chst den VBA-Editor mit dem passenden Outlook-VBA-Projekt &ouml;ffnen, was unter Outlook am schnellsten mit <b>Alt + F11 <\/b>erledigt ist. Sie finden dort ein Standardprojekt namens <b>ThisOutlookSession <\/b>(deutsche Variante: <b>DieseOutlookSitzung<\/b>) vor. Hier tragen Sie auch die folgende Routine ein, die mit dem <b>AutoExec<\/b>-Makro von Access vergleichbar ist: Sie wird n&auml;mlich beim Start von Outlook automatisch aufgerufen. In diesem Falle belegt sie die oben deklarierte Objektvariable mit einem Aufgabenordner namens <b>Projekte<\/b>. Beim ersten Aufruf ist dieser noch nicht vorhanden, was einen Fehler ausl&ouml;st, den die Routine erkennt und mit dem Anlegen des ben&ouml;tigten Ordners ausb&uuml;gelt &#8211; beim n&auml;chsten Versuch direkt im Anschluss wird die <b>Folders<\/b>-Auflistung des <b>Projekte<\/b>-Ordners dann zugewiesen (auch wenn sie zu diesem Zeitpunkt noch leer ist):<\/p>\n<pre>Private Sub Application_Startup() \r\nOn Error Resume Next\r\nSet objProjects = _<br \/>    GetTaskfolder.Folders(&quot;Projekte&quot;).Folders\r\nIf Not Err.Number = 0 Then\r\n    GetTaskfolder.Folders.Add &quot;Projekte&quot;, _<br \/>        olFolderTasks\r\nEnd If\r\nSet objProjects = _<br \/>    GetTaskfolder.Folders(&quot;Projekte&quot;).Folders\r\n    ...\r\nEnd Sub<\/pre>\n<p>Was haben Sie nun davon Nun: Sie haben ein Objekt, f&uuml;r das Sie Ereignisprozeduren anlegen k&ouml;nnen, die etwa beim Hinzuf&uuml;gen oder &auml;ndern eines Ordners unterhalb des <b>Projekte<\/b>-Ordners ausgel&ouml;st werden. Dies nutzen Sie nun zun&auml;chst f&uuml;r eine Routine, die beim Anlegen eines neuen Projektordners einen entsprechenden Datensatz in die Tabelle <b>tblProjekte <\/b>der Projektzeiterfassungs-Datenbank eintr&auml;gt (s. Listing 1). Die Routine pr&uuml;ft, ob der Ordner standardm&auml;&szlig;ig Aufgaben aufnimmt, und setzt dann eine SQL-Anweisung zusammen, die einen neuen Eintrag mit dem Namen des Ordners in die Tabelle <b>tblProjekte <\/b>eintr&auml;gt.<\/p>\n<div class=\"abbildung\">\n<p class=\"tabellenkopf\">Listing 1: Eintragen eines neuen Projekts<\/p>\n<pre>Private Sub objProjects_FolderAdd(ByVal Folder As MAPIFolder)\r\n    Dim strSQL As String\r\n    Dim objTasks As clsTasks\r\n    Select Case Folder.DefaultItemType\r\n        Case olTaskItem\r\n            strSQL = &quot;INSERT INTO tblProjekte(Projektbezeichnung) VALUES(&apos;&quot; &amp; Folder.Name &amp; &quot;&apos;)&quot;\r\n            CurrentDBC.Execute strSQL, dbFailOnError\r\n            If CurrentDBC.RecordsAffected = 1 Then\r\n                Folder.Description = &quot;[project|&quot; _<br \/>                    &amp; CurrentDBC.OpenRecordset(&quot;SELECT @@IDENTITY&quot;).Fields(0).Value &amp; &quot;]&quot;\r\n            End If\r\n        Case Else\r\n    End Select\r\n    ...\r\nEnd Sub<\/pre>\n<\/div>\n<p>Nun fehlt dem Projektordner noch eine Information, die das anschlie&szlig;ende Zuordnen zum frisch angelegten Datensatz erlaubt. Geeignet w&auml;re hierf&uuml;r die Datensatznummer in der Datenbank. Diese m&uuml;ssen Sie dem Outlook-Ordner nun noch in geeigneter Weise zuweisen. &uuml;blicherweise verwendet man daf&uuml;r die sonst nicht genutzte <b>BillingInformation<\/b>-Eigenschaft oder eine benutzerdefinierte Eigenschaft. Beides steht aber nur f&uuml;r Elemente wie Mails, Termine et cetera zur Verf&uuml;gung und nicht f&uuml;r Ordner. Also behilft man sich mit einer Notl&ouml;sung und schreibt einen Ausdruck wie <b>[project|125] <\/b>in die Eigenschaft <b>Description <\/b>des Ordners. <b>125 <\/b>w&auml;re hier die <b>ProjektID <\/b>aus der Tabelle <b>tblProjekte<\/b>, die Sie mit der <b>@@IDENTITY<\/b>-Funktion von SQL ermitteln. Diese Funktion liefert den zuletzt in irgendeiner Tabelle der Datenbank eingef&uuml;gten Autowert; die Verwendung eines Autowerts als Wert des Prim&auml;rschl&uuml;sselfeldes ist hier also obligatorisch. Das Drumherum, also <b>[project|&#8230;]<\/b>, dient der sicheren Identifizierung der Datensatznummer.<\/p>\n<p>Wenn Sie nun Outlook neu starten und automatisch ein <b>Projekte<\/b>-Ordner im Bereich <b>Aufgaben <\/b>erscheint, k&ouml;nnen Sie das erste Projekt anlegen und einen ersten Blick in die Tabelle <b>tblProjekte <\/b>werfen. Dort sollte der erste Eintrag nun ebenfalls zu finden sein. Legen Sie nun direkt die n&auml;chste Ereignisprozedur an, die beim &auml;ndern des Ordners durch das Ereignis <b>FolderChange <\/b>ausgel&ouml;st wird (s. Listing 2). Diese Routine liest zun&auml;chst die ID des betroffenen Ordners aus &#8211; genau die ID, die Sie per <b>[project|&#8230;] <\/b>in die Eigenschaft <b>Description <\/b>eingebettet haben. Daf&uuml;r sorgt die Funktion <b>GetID<\/b>, die f&uuml;r das Ermitteln der IDs verschiedener Objekte wie Ordner, Aufgaben und T&auml;tigkeiten verantwortlich ist. F&uuml;r das Ermitteln der Projekt-ID &uuml;bergeben Sie der Funktion den <b>Description<\/b>-Wert sowie eine Zeichenfolge zur Charakterisierung des zu ermittelnden Wertes &#8211; hier <b>project<\/b> (dies scheint hier doppelt gemoppelt, ist aber an anderer Stelle sinnvoll, wie Sie weiter unten lesen werden).<\/p>\n<div class=\"abbildung\">\n<p class=\"tabellenkopf\">Listing 2: &auml;ndern der Eigenschaften eines Projekts<\/p>\n<pre>Private Sub objProjects_FolderChange(ByVal Folder As MAPIFolder)\r\n    Dim strDescription As String\r\n    Dim lngProjectID As Long\r\n    Dim strSQL As String\r\n    Select Case Folder.DefaultItemType\r\n        Case olTaskItem\r\n            strDescription = Folder.Description\r\n            lngProjectID = GetID(strDescription, &quot;project&quot;)\r\n            If lngProjectID = 0 Then\r\n                strSQL = &quot;INSERT INTO tblProjekte(Projektbezeichnung) VALUES(&apos;&quot; &amp; Folder.Name &amp; &quot;&apos;)&quot;\r\n                CurrentDBC.Execute strSQL, dbFailOnError\r\n                If CurrentDBC.RecordsAffected = 1 Then\r\n                    Folder.Description = &quot;[project|&quot; _<br \/>                        &amp; CurrentDBC.OpenRecordset(&quot;SELECT @@IDENTITY&quot;).Fields(0).Value &amp; &quot;]&quot;\r\n                End If\r\n            Else\r\n                strSQL = &quot;UPDATE tblProjekte SET Projektbezeichnung = &apos;&quot; &amp; Folder.Name _<br \/>                    &amp; &quot;&apos; WHERE ProjektID = &quot; &amp; lngProjectID\r\n                CurrentDBC.Execute strSQL, dbFailOnError\r\n            End If\r\n    End Select\r\nEnd Sub<\/pre>\n<\/div>\n<p>Die Routine pr&uuml;ft diesen Wert. Ist er <b>0<\/b>, bedeutet dies, dass der Ordner noch gar nicht vorhanden ist und neu in der Datenbank angelegt werden muss. Hat er einen anderen Wert, passt die Routine den entsprechenden Datensatz in der Tabelle <b>tblProjekte <\/b>an. Woher aber kommt ein Ordner, der noch nicht in der Datenbank erfasst ist<\/p>\n<p>Nun: Wenn der Benutzer direkt unterhalb des Aufgabenordners einen Ordner anlegt und diesen anschlie&szlig;end in den <b>Projekte<\/b>-Ordner zieht, wird dieser &#8211; im Sinne der vorliegenden Anwendung &#8211; auch zum Projektordner und entsprechend erfasst und gekennzeichnet.<\/p>\n<p><b>Aufgaben anlegen<\/b><\/p>\n<p>Das Anlegen von Aufgaben eines Projekts soll erfolgen, wenn der Benutzer den passenden Ordner ausgew&auml;hlt hat und der Aufgabenliste dieses Ordners einen neuen Eintrag hinzuf&uuml;gt. Eine Ereignisprozedur soll dann auch einen entsprechenden Eintrag zur Tabelle <b>tblAufgaben <\/b>der Datenbank hinzuf&uuml;gen.<\/p>\n<p>Das ist allerdings leichter gesagt als getan, denn es gibt ja beliebig viele Projektordner, deren Ereignisse Sie abfangen m&uuml;ssten. Und damit kommt hier nun die kniffligste Stelle der gesamten Anwendung &#8211; zumindest f&uuml;r Entwickler, die noch wenig Kontakt mit der Programmierung von Collections und Klassen hatten: Sie m&uuml;ssen n&auml;mlich dynamisch f&uuml;r jeden Projektordner ein Objekt anlegen, das dessen Eigenschaften aufnimmt und vor allem auf Ereignisse reagiert &#8211; wie etwa das Hinzuf&uuml;gen einer neuen Aufgabe sowie das Verschieben, &auml;ndern und L&ouml;schen bestehender Aufgaben. Da Sie beim Programmieren noch nicht wissen, welche Projektordner der Benutzer anlegen wird, k&ouml;nnen Sie nat&uuml;rlich auch keine entsprechenden Objekte vorproduzieren, sodass diese zur Laufzeit erzeugt werden m&uuml;ssen. Und das geht so: Sie erstellen zun&auml;chst eine Klasse namens <b>clsTasks<\/b>, welche die Deklaration eines <b>Folder<\/b>-Objekts und einer <b>Items<\/b>-Auflistung enth&auml;lt:<\/p>\n<pre>Private WithEvents mProject As Outlook.Folder\r\nPrivate WithEvents mTasks As Outlook.Items<\/pre>\n<p>Zus&auml;tzlich erzeugen Sie einige Ereignisprozeduren, die durch bestimmte Aktionen ausgel&ouml;st werden. F&uuml;r das Projektordner-Element w&auml;ren das die folgenden Zwei:<\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>BeforeFolderMove<\/b>: Wird ausgel&ouml;st, bevor der Projektordner durch den Benutzer in einen anderen Ordner verschoben wird &#8211; das kann auch der <b>Gel&ouml;schte Objekte<\/b>-Ordner sein.<\/li>\n<li class=\"aufz-hlung\"><b>BeforeItemMove<\/b>: Wird ausgel&ouml;st, bevor ein Element des Ordners, also eine Aufgabe, in einen anderen Ordner gezogen wird (auch hier kommt der <b>Gel&ouml;schte Objekte<\/b>-Ordner in Frage).<\/li>\n<\/ul>\n<p>Au&szlig;erdem legen Sie in dieser Klasse einige Ereignisprozeduren f&uuml;r die Auflistung der im Ordner enthaltenen Aufgaben-Objekte fest:<\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>ItemAdd<\/b>: Wird beim Hinzuf&uuml;gen neuer Aufgaben zum Projektordner ausgel&ouml;st.<\/li>\n<li class=\"aufz-hlung\"><b>ItemChange<\/b>: Wird beim &auml;ndern einer im Projektordner befindlichen Aufgabe ausgel&ouml;st.<\/li>\n<\/ul>\n<p>M&ouml;glicherweise fehlt Ihnen hier ein Ereignis, das beim L&ouml;schen einer Aufgabe ausgel&ouml;st wird: Dies ist bereits durch <b>BeforeItemMove <\/b>abgedeckt &#8211; das L&ouml;schen einer Aufgabe entspricht n&auml;mlich dem Verschieben in den <b>Gel&ouml;schte Objekte<\/b>-Ordner. Die Ereignisprozeduren f&uuml;hren nichts kompliziertes aus: Sie pr&uuml;fen lediglich, ob das jeweilige Objekt (also Projektordner oder T&auml;tigkeit) im M&uuml;lleimer von Outlook gelandet ist, und tragen in diesem Fall einen Wert in das Feld <b>GeloeschtAm <\/b>des passenden Datensatzes in der Datenbank ein. Alternativ werden neue oder ge&auml;nderte T&auml;tigkeiten samt Eigenschaften in die Datenbank geschrieben &#8211; f&uuml;r weitere Informationen sehen Sie sich einfach den Quellcode des Moduls <b>clsTasks <\/b>an.<\/p>\n<p>Jetzt aber zum schwierigen und vielleicht nicht so einfach nachvollziehbaren Teil: Sie m&uuml;ssen f&uuml;r jeden Projektordner ein Objekt auf Basis von <b>clsTasks <\/b>instanzieren und ihm die passenden Objekte und Eigenschaften zuweisen. Dies geschieht ebenfalls in der Routine <b>Application_Startup<\/b>, die Sie bereits weiter oben kennen gelernt haben. Zun&auml;chst deklarieren Sie im Modulkopf eine Variable f&uuml;r die Auflistung, die alle f&uuml;r die verschiedenen Projektordner angelegten <b>clsTasks<\/b>-Objekte aufbewahren soll:<\/p>\n<pre>Dim colProjects As Collection<\/pre>\n<p>In <b>Application_Startup <\/b>deklarieren Sie weiterhin folgende Variablen (wir f&uuml;hren hier nur die f&uuml;r das Erzeugen der Projektordner-Objekte notwendigen Schritte auf, die Routine <b>Application_Startup <\/b>im Zusammenhang finden Sie in den Dateien <b>ThisOutlookSession.cls <\/b>beziehungsweise <b>clsTasks.cls<\/b>):<\/p>\n<pre>Dim objProject As Outlook.Folder\r\nDim objTasks As clsTasks<\/pre>\n<p>Die Variable <b>objProjects <\/b>speichert den jeweils aktuellen Projektordner beim Durchlaufen aller im <b>Projekte<\/b>-Ordner enthaltenen Ordner, <b>objTasks <\/b>nimmt die im jeweiligen Ordner enthaltenen Aufgaben-Objekte auf. In <b>Application_Startup <\/b>geschieht dann weiterhin Folgendes:<\/p>\n<pre>Set colProjects = New Collection\r\nFor Each objProject In objProjects\r\n    Set objTasks = New clsTasks\r\n    Set objTasks.Project = objProject\r\n    colProjects.Add objTasks\r\nNext<\/pre>\n<p>Zun&auml;chst wird also das Objekt <b>colProjects <\/b>instanziert, damit es im Anschluss die aus <b>clsTasks <\/b>erzeugten Objekte sowie die Ordner-Objekte aufnehmen kann.<\/p>\n<p>Diese werden in einer <b>For Each<\/b>-Schleife &uuml;ber alle in dem weiter oben angelegten Objekt <b>objProjects <\/b>durchlaufen, das ja bereits weiter oben erzeugt wurde.<\/p>\n<p>Dabei wird zun&auml;chst eine neue Instanz von <b>clsTasks<\/b> erzeugt und dann seine Eigenschaft <b>Project <\/b>mit dem aktuellen Projektordner-Objekt gef&uuml;llt &#8211; dazu gleich mehr.<\/p>\n<p>Das Objekt <b>objTasks <\/b>wird dann der Auflistung <b>colProjects <\/b>hinzugef&uuml;gt. W&uuml;rde man das Objekt nicht auf diese Weise &#8222;wegspeichern&#8220;, w&uuml;rde es beim Erzeugen des n&auml;chsten <b>objTasks<\/b>-Objekts von diesem &uuml;berschrieben &#8211; die Collection ist also lediglich ein Container ohne weitere Funktion.<\/p>\n<p>Die oben angesprochene Eigenschaft <b>Project <\/b>sorgt daf&uuml;r, dass man dem jeweiligen <b>objTasks<\/b>-Objekt einen Verweis auf das den aktuellen Projektordner repr&auml;sentierende Objekt <b>objProject <\/b>&uuml;bergeben kann. Dazu brauchen Sie in der Klasse <b>clsTasks <\/b>noch eine entsprechende <b>Property Get<\/b>-Prozedur, welche die private Variable <b>mProject <\/b>von au&szlig;erhalb des Objekts &auml;nderbar macht:<\/p>\n<pre>Public Property Set Project(objProject As _<br \/>        Outlook.Folder)\r\n    Set mProject = objProject\r\n    Set mTasks = objProject.Items\r\nEnd Property<\/pre>\n<p>Nachdem dadurch f&uuml;r jeden im <b>Projekte<\/b>-Ordner enthaltenen Ordner ein <b>objTasks <\/b>angelegt wurde, greifen nachfolgend auch die enthaltenen Ereignisse und l&ouml;sen die passenden Prozeduren aus.<\/p>\n<p><b>Von der Aufgabe zur T&auml;tigkeit<\/b><\/p>\n<p>Fehlt noch der letzte Schritt: Der Benutzer soll Eintr&auml;ge aus der Aufgabenliste in den Kalender ziehen und daraus Termine erzeugen k&ouml;nnen, die ja im Kontext dieser Anwendung als T&auml;tigkeiten gelten. Das Problem dabei ist, dass, im Gegensatz zum Anlegen einer Aufgabe im Ordner eines Projekts, keinerlei Verbindung zwischen dem neuen Termin und der Aufgabe besteht &#8211; mit einer Ausnahme: einige Eigenschaften, die im Textformat in der Beschreibung des Termins zu finden sind, darunter in diesem Fall eben auch die in der Eigenschaft <b>BillingInformation <\/b>enthaltenen (siehe Bild 4).<\/p>\n<div class=\"image\">\n    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_05\/OutlookFrontend-web-images\/pic004_opt.jpeg\" alt=\"pic004.tif\" \/>\n<\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 4: Diese Eigenschaften &#8222;vererbt&#8220; eine Aufgabe einem daraus abgeleiteten Termin.<\/span><\/b><\/p>\n<\/div>\n<p>Das reicht auch v&ouml;llig aus: Die in der Form <b>[task|271][project|89] <\/b>gespeicherten Informationen k&ouml;nnen Sie beim Anlegen des Termins auslesen und weiterverwenden. Doch so weit sind wir noch nicht: Zun&auml;chst brauchen Sie auch noch ein paar Ereignisse, die in Zusammenhang mit dem Erstellen, &auml;ndern und L&ouml;schen von Terminen ausgel&ouml;st werden &#8211; und das damit verbundene Objekt. Analog zu den Projektordnern\/Aufgaben teilen sich auch die hier ben&ouml;tigten Ereignisse auf den Terminordner &#8211; hier synonym mit &#8222;Outlook-Kalender&#8220; &#8211; und die Termin-Objekte selbst auf. Die ben&ouml;tigten und im Kopf des Moduls <b>ThisOutlookSession <\/b>deklarierten Objektvariablen sehen so aus:<\/p>\n<pre>Dim WithEvents objAppointmentFolder _<br \/>    As Outlook.Folder\r\nDim WithEvents objAppointments As Outlook.Items<\/pre>\n<p>Im Gegensatz zu den Projektordnern gibt es allerdings nur einen Terminordner, den Sie in der Routine <b>Application_Startup <\/b>so instanzieren:<\/p>\n<pre>Set objAppointmentFolder = GetMAPINamespace.GetDefaultFolder(olFolderCalendar)<\/pre>\n<p>Die Auflistung der Elemente dieses Ordners referenzieren Sie per Objektvariable folgenderma&szlig;en:<\/p>\n<pre>Set objAppointments = objAppointmentFolder.Items<\/pre>\n<p>Das Terminordner-Objekt <b>objAppointmentFolder <\/b>steuert nur ein Ereignis bei. Es hei&szlig;t <b>BeforeItemMove <\/b>und pr&uuml;ft lediglich, ob ein verschobenes Termin-Objekt in den M&uuml;lleimer gewandert ist, um den Wert des Feldes <b>GeloeschtAm <\/b>des betroffenen Datensatzes der Tabelle <b>tblTaetigkeiten <\/b>auf den L&ouml;schzeitpunkt einzustellen. Dies schlie&szlig;t das L&ouml;schen beispielsweise mit einem Kontextmen&uuml;eintrag oder der <b>Entfernen<\/b>-Taste mit ein &#8211; immerhin l&ouml;sen Sie auch hiermit nur das Verschieben des betroffenen Elements aus.<\/p>\n<p>Die Objektvariable <b>objAppointments<\/b>, die alle im Terminordner enthaltenen Objekte umfasst, stellt die beiden Ereignisse <b>ItemAdd<\/b> und <span class=\"quellcode\">ItemChange <\/span>zur Verf&uuml;gung. <span class=\"quellcode\">ItemAdd <\/span>reagiert beim Hinzuf&uuml;gen eines Termins, etwa durch das Ziehen einer Aufgabe in den Kalender, aber auch bei anderen Vorg&auml;ngen, die einen neuen Termin erzeugen. Ob der Termin auf einer Aufgabe basiert, pr&uuml;ft die Routine, indem sie den Inhalt der Eigenschaft <b>Body <\/b>des neuen Termins auf Vorkommen eines Ausdrucks der Form <b>[task|&#8230;] <\/b>pr&uuml;ft. Ist dieser vorhanden, stammt der Termin von einer Aufgabe ab und wird samt seiner Eigenschaften in der Tabelle <b>tblTaetigkeiten <\/b>der Datenbank gespeichert. Die Routine fragt dann noch die ID des neu hinzugef&uuml;gten Datensatzes ab und schreibt einen Ausdruck der Form <b>[action|&#8230;][task|&#8230;] <\/b>in die <b>BillingInformation<\/b>-Eigenschaft des neuen Termins, um diesen bei sp&auml;teren &auml;nderungen mit seinem Pendant in der Datenbank synchronisieren zu k&ouml;nnen.<\/p>\n<p>Dies ist zum Beispiel beim &auml;ndern der Fall. &auml;nderungen werden durch das Ereignis <b>ItemChange <\/b>abgefangen; die in der Prozedur enthaltenen Vorg&auml;nge sind trivial: Pr&uuml;fen, ob es sich um einen per Aufgabe erzeugten Termin handelt, Daten in die Datenbank &uuml;bertragen &#8211; fertig.<\/p>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Die hier vorgestellte Anwendung l&auml;sst die neuen M&ouml;glichkeiten von Outlook und Access in der Version 2007 erahnen. Projektzeiten mit dem Standardinstrument Outlook zu erfassen &#8211; das d&uuml;rfte der Traum vieler Projektleiter und Mitarbeiter sein, da komfortabler, als dies in einer weiteren Anwendung zu erledigen.<\/p>\n<p>M&ouml;glichkeiten zur Optimierung beziehungsweise Erweiterung gibt es genug: Zum Beispiel k&ouml;nnten Sie eine hierarchische Projektstruktur erzeugen, damit man Projekten noch Unterprojekte hinzuf&uuml;gen kann. Noch nicht abgefragt wird in der aktuellen Version au&szlig;erdem das Kopieren und Einf&uuml;gen bestehender T&auml;tigkeiten, und auch das Anlegen von Terminen ohne Bezug zu einer Aufgabe und damit zu einem Projekt alias Kostenstelle k&ouml;nnten Sie noch unterbinden. F&uuml;r Benutzer, die mit dem L&ouml;schen von Elementen manchmal zu schnell bei der Sache sind, k&ouml;nnte man au&szlig;erdem eine M&ouml;glichkeit realisieren, das Wiederherstellen eigentlich gel&ouml;schter Objekte zu tracken und entsprechend in die Datenbank zu &uuml;bertragen.<\/p>\n<p>Ach, und wenn Sie nicht gerade Ein-Mann-Unternehmen mit dieser Projektzeiterfassung versorgen m&ouml;chten, w&auml;re Mehrbenutzerf&auml;higkeit sicher ganz hilfreich und nicht besonders aufwendig zu implementieren.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Projektzeiterfassung.zip<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/5A6A3F05-8738-46D4-AA35-8B5A4AB1255A\/aiu_532.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Projektzeiterfassung leidet meist darunter, dass man seinen Pflichten nicht nachkommt und seine Zeiten nicht pflegt. Das ist auch verst&auml;ndlich: Heutzutage muss sich der Anwender mit immer mehr Tools herumschlagen und ist beinahe mehr mit der Dokumentation seines Tuns als mit seiner Arbeit besch&auml;ftigt. Da w&auml;re es doch sch&ouml;n, wenn man zwei Fliegen mit einer Klappe schlagen k&ouml;nnte &#8211; etwa, indem man die in Outlook eingetragenen Termine und mehr direkt in die Projektzeiterfassung &uuml;bertr&auml;gt.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662007,66062007,44000026,44000027,44000033],"tags":[],"class_list":["post-55000532","post","type-post","status-publish","format-standard","hentry","category-662007","category-66062007","category-Interaktiv","category-Loesungen","category-Outlook"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Outlook 2007 als Projektzeiterfassungs-Frontend - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Outlook_2007_als_ProjektzeiterfassungsFrontend\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Outlook 2007 als Projektzeiterfassungs-Frontend\" \/>\n<meta property=\"og:description\" content=\"Die Projektzeiterfassung leidet meist darunter, dass man seinen Pflichten nicht nachkommt und seine Zeiten nicht pflegt. Das ist auch verst&auml;ndlich: Heutzutage muss sich der Anwender mit immer mehr Tools herumschlagen und ist beinahe mehr mit der Dokumentation seines Tuns als mit seiner Arbeit besch&auml;ftigt. Da w&auml;re es doch sch&ouml;n, wenn man zwei Fliegen mit einer Klappe schlagen k&ouml;nnte - etwa, indem man die in Outlook eingetragenen Termine und mehr direkt in die Projektzeiterfassung &uuml;bertr&auml;gt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Outlook_2007_als_ProjektzeiterfassungsFrontend\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-11T21:19:13+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg08.met.vgwort.de\/na\/5d895db1d83d4ccb9a672ccecc05d1cd\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"21\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Outlook_2007_als_ProjektzeiterfassungsFrontend\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Outlook_2007_als_ProjektzeiterfassungsFrontend\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Outlook 2007 als Projektzeiterfassungs-Frontend\",\"datePublished\":\"2021-02-11T21:19:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Outlook_2007_als_ProjektzeiterfassungsFrontend\\\/\"},\"wordCount\":3966,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Outlook_2007_als_ProjektzeiterfassungsFrontend\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/5d895db1d83d4ccb9a672ccecc05d1cd\",\"articleSection\":[\"2007\",\"6\\\/2007\",\"Interaktiv\",\"L\u00f6sungen\",\"Outlook\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Outlook_2007_als_ProjektzeiterfassungsFrontend\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Outlook_2007_als_ProjektzeiterfassungsFrontend\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Outlook_2007_als_ProjektzeiterfassungsFrontend\\\/\",\"name\":\"Outlook 2007 als Projektzeiterfassungs-Frontend - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Outlook_2007_als_ProjektzeiterfassungsFrontend\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Outlook_2007_als_ProjektzeiterfassungsFrontend\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/5d895db1d83d4ccb9a672ccecc05d1cd\",\"datePublished\":\"2021-02-11T21:19:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Outlook_2007_als_ProjektzeiterfassungsFrontend\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Outlook_2007_als_ProjektzeiterfassungsFrontend\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Outlook_2007_als_ProjektzeiterfassungsFrontend\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/5d895db1d83d4ccb9a672ccecc05d1cd\",\"contentUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/5d895db1d83d4ccb9a672ccecc05d1cd\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Outlook_2007_als_ProjektzeiterfassungsFrontend\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Outlook 2007 als Projektzeiterfassungs-Frontend\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Outlook 2007 als Projektzeiterfassungs-Frontend - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Outlook_2007_als_ProjektzeiterfassungsFrontend\/","og_locale":"de_DE","og_type":"article","og_title":"Outlook 2007 als Projektzeiterfassungs-Frontend","og_description":"Die Projektzeiterfassung leidet meist darunter, dass man seinen Pflichten nicht nachkommt und seine Zeiten nicht pflegt. Das ist auch verst&auml;ndlich: Heutzutage muss sich der Anwender mit immer mehr Tools herumschlagen und ist beinahe mehr mit der Dokumentation seines Tuns als mit seiner Arbeit besch&auml;ftigt. Da w&auml;re es doch sch&ouml;n, wenn man zwei Fliegen mit einer Klappe schlagen k&ouml;nnte - etwa, indem man die in Outlook eingetragenen Termine und mehr direkt in die Projektzeiterfassung &uuml;bertr&auml;gt.","og_url":"https:\/\/access-im-unternehmen.de\/Outlook_2007_als_ProjektzeiterfassungsFrontend\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-02-11T21:19:13+00:00","og_image":[{"url":"http:\/\/vg08.met.vgwort.de\/na\/5d895db1d83d4ccb9a672ccecc05d1cd","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"21\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Outlook_2007_als_ProjektzeiterfassungsFrontend\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Outlook_2007_als_ProjektzeiterfassungsFrontend\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Outlook 2007 als Projektzeiterfassungs-Frontend","datePublished":"2021-02-11T21:19:13+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Outlook_2007_als_ProjektzeiterfassungsFrontend\/"},"wordCount":3966,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Outlook_2007_als_ProjektzeiterfassungsFrontend\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/5d895db1d83d4ccb9a672ccecc05d1cd","articleSection":["2007","6\/2007","Interaktiv","L\u00f6sungen","Outlook"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Outlook_2007_als_ProjektzeiterfassungsFrontend\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Outlook_2007_als_ProjektzeiterfassungsFrontend\/","url":"https:\/\/access-im-unternehmen.de\/Outlook_2007_als_ProjektzeiterfassungsFrontend\/","name":"Outlook 2007 als Projektzeiterfassungs-Frontend - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Outlook_2007_als_ProjektzeiterfassungsFrontend\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Outlook_2007_als_ProjektzeiterfassungsFrontend\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/5d895db1d83d4ccb9a672ccecc05d1cd","datePublished":"2021-02-11T21:19:13+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Outlook_2007_als_ProjektzeiterfassungsFrontend\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Outlook_2007_als_ProjektzeiterfassungsFrontend\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Outlook_2007_als_ProjektzeiterfassungsFrontend\/#primaryimage","url":"http:\/\/vg08.met.vgwort.de\/na\/5d895db1d83d4ccb9a672ccecc05d1cd","contentUrl":"http:\/\/vg08.met.vgwort.de\/na\/5d895db1d83d4ccb9a672ccecc05d1cd"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Outlook_2007_als_ProjektzeiterfassungsFrontend\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Outlook 2007 als Projektzeiterfassungs-Frontend"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000532"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000532\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000532"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000532"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}