Aufgaben (mit Dokumenten) in Outlook eintragen |
|
|||||||||||||||||||||
Mittels VBA lassen sich nicht nur Aufgaben und Abläufe innerhalb eines Office-Programmes erledigen und steuern sondern auch zwischen den Office-Programmen übertragen. Dabei ist es unter Office 2000 allerdings noch so, dass nicht jeweils das vollständige Objektmodell zur Verfügung steht und sich somit Einschränkungen hinsichtlich des steuerbaren Programmumfangs ergeben. In diesem Beispiel wird gezeigt, wie sich aus Word heraus eine Aufgabe in (ein lokal installiertes) Outlook eintragen lässt. Dabei kann optional das gerade geöffnete Dokument als Aufgaben-Anhang mitgespeichert werden. In der aktuellen Version werden nicht alle Möglichkeiten und Einträge einer Outlook-Aufgabe genutzt, sondern es soll eher der Anbindungsweg und das Eintragen der wichtigsten Informationen gezeigt werden. Folgende Informationen können über die Userform erfasst und anschließend nach Outlook übermittelt werden:
Wenn alle Informationen erfasst sind, muss zuerst eine Verbindung zu Outlook hergestellt werden.
Dazu wird per Late binding das Outlook-Objekt angesprochen. Bei Late binding ist kein Verweis
auf eine Microsoft Outlook x Object Library notwendig; allerdings müssen in diesem
Fall alle Konstanten als Zahlenwerte angegeben werden. Anschließend wird ein neues Item vom Typ olTaskItem (Wert: 3) erzeugt.
An dieses Objekt werden dann die in der Erfassungsmaske zusammengetragenen Informationen weitergegeben.
Ist ein Erinnerungsdatum angegeben und liegt dies im angegebenen Datumsbereich, wird das Erinnerungsfeld aktiviert
(.ReminderSet = True) und das Erinnerungsdatum
eingetragen (.ReminderTime). Sofern die Outlook-Instanz vom Makro erzeugt wurde, wird sie anschließend wieder geschlossen. Wichtig
Sollte es da zu Problemen kommen, prüft ob Ihr das Steuerelement in der Liste findet. Function Dok2OLTask(dStart As Date, dEnd As Date, strCat As String, _ strSub As String, strBody As String, dRemind As Date, Optional oDoc As Document) As String Dim olOrdner As Object 'MAPIFolder Dim myOlApp As Object 'Outlook.Application Dim olTaskItem As Object ' TaskItem Dim bcreate As Boolean Const c_TaskItem As Integer = 3 bcreate = False On Error Resume Next Set myOlApp = GetObject(, "Outlook.Application") On Error GoTo 0 On Error GoTo Err_Handle ' OL bereits gestartet? If myOlApp Is Nothing Then bcreate = True Set myOlApp = CreateObject("Outlook.Application") End If ' Neue Aufgabe Set olTaskItem = myOlApp.CreateItem(c_TaskItem) ' Aufgabe beschreiben With olTaskItem .Categories = strCat .StartDate = dStart .DueDate = dEnd ' Erinnerung gesetzt If dRemind > 0 Then .ReminderSet = True .ReminderTime = dRemind Else .ReminderSet = False End If .Subject = strSub .Body = strBody .Importance = cbxPrio.ListIndex ' Dokument anhängen If Not oDoc Is Nothing Then .Attachments.Add oDoc.FullName End If .Save End With ' Aufräumen Set olOrdner = Nothing Err_Handle: Dok2OLTask = Err.Description If bcreate = True Then myOlApp.Quit End If Set myOlApp = Nothing End Function Um die Userform z.B. per Symbolleistensymbol aufrufen zu können, muss in ein Modul ein Makro eingefügt werden, das die Userfrom aufruft. Dieses Makro kann dann per Anpassen-Befehl mit einem Symbol versehen in eine Symbolleiste eingefügt werden. Sub CallDoc2OLfrm() frmDoc2OLTask.Show vbModeless End Sub |
www.chf-online.de/vba/vbaolaufgabe.htm | © 2001-11 Christian Freßdorf (Zaphod-Systems) |