Aufgaben (mit Dokumenten) in Outlook eintragen (Update) |
|
|||||||||||||||||||||
Update 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. Damit der Outlook-Explorer am Ende mit den Aufgaben angezeigt werden kann, muss ein Explorer-Objekt in Outlook festgelegt werden. Wenn dies der Fall ist, kann er anschließend aufgerufen werden. Set myNameSpace = myOlApp.GetNamespace("MAPI") Set myFolder = myNameSpace.GetDefaultFolder(c_olFolderTasks) Set myExplorer = myOlApp.ActiveExplorer If TypeName(myExplorer) = "Nothing" Then Set myExplorer = myFolder.GetExplorer End If 'Zeigt den Explorer mit dem Aufgabenordner an 'myExplorer.Display Die Kernfunktion sieht dann folgendermaßen aus: 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 myOlApp As Object 'Outlook.Application Dim olTaskItem As Object 'Outlook.TaskItem Dim myNameSpace As Object 'Outlook.NameSpace Dim myFolder As Object Dim myExplorer As Object 'Outlook.Explorer Const c_TaskItem As Integer = 3 Const c_ByValue As Integer = 1 Const c_olFolderTasks As Integer = 13 Dim bcreate As Boolean 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 Set myNameSpace = myOlApp.GetNamespace("MAPI") Set myFolder = myNameSpace.GetDefaultFolder(c_olFolderTasks) Set myExplorer = myOlApp.ActiveExplorer If TypeName(myExplorer) = "Nothing" Then Set myExplorer = myFolder.GetExplorer End If 'Zeigt den Explorer mit dem Aufgabenordner an 'myExplorer.Display ' 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, c_ByValue End If .Save If Me.chkShow = True Then myExplorer.Display '.Display End If MsgBox "Die Aufgabe wurde in Outlook eingetragen", vbInformation, "Outlookaufgaben erstellen" End With ' Aufräumen GoTo fkt_Exit Err_Handle: Dok2OLTask = Err.Description If bcreate = True Then ' myOlApp.Quit End If fkt_Exit: Set myOlApp = Nothing End Function Die Userform kann aus der Dokumentvorlage per Symbolleistensymbol aufgerufen werden. Dazu besitzt diese eine neue Symbolleiste CHF_OLTask mit folgendem Symbol: Wenn Ihr die Userform in einen eigenen Aufruf einbinden möchten, benötige Ihr folgenden Aufruf: Sub CallDoc2OLfrm() frmDoc2OLTask.Show vbModeless End Sub |
www.chf-online.de/vba/vbpolaufgabe2.htm | © 2001-11 Christian Freßdorf (Zaphod-Systems) |