Aktuelle Seite:
/vba/vbaolaufgabe.htm
Letzte Änderung: 24.06.2006

Getestet unter Word2000Getestet unter WordXPGetestet unter Word2003Getestet unter Outlook2000Getestet unter Outlook2003Getestet unter Win2000Getestet unter WinXP  
Beispiel anzeigen
Makro/Datei speichern
Print

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.

Eingabemaske Aufgabendaten

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:

  • Start-Datum
  • Fälligkeitsdatum
  • Erinnerungsdatum (relative Angabe) und Uhrzeit
  • Bearbeitungspriorität
  • Aufgaben-Kategorie
  • Aufgabenbetreff
  • Aufgabenbeschreibung
  • Aktuelles Dokument

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.
Wenn Outlook bereits aktiv ist, wird diese Instanz verwendet, ansonsten wird eine neue geöffnet.

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).
Zum Schluss wird das aktuelle Dokument, sofern angegeben, als Anhang an die Aufgabe angehängt und die Aufgabe gespeichert.

Sofern die Outlook-Instanz vom Makro erzeugt wurde, wird sie anschließend wieder geschlossen.

Wichtig
Damit das Beispiel funktioniert, wird ein zusätzliches Steuerelement verwendet:

  • Kalender Steuerelement 9.0 (MSCAL.OCX)

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)