E
Eugen Prechel
Hallo Newsgroup,
ich habe von der Programmierung in Outlook wenig Ahnung.
Muss aber ein Makro schreiben, welches bei Termineingabe eine Kopie des
Termins im Öffentlichen Ordner erstellt.
Das Kopieren eines Termins habe ich bereits realisiert:
Dim WithEvents mcolCalItems As Items
Private Sub Application_Startup()
On Error Resume Next
Dim objNS As NameSpace
Set objNS = Application.GetNamespace("MAPI")
Set mcolCalItems = objNS.GetDefaultFolder(olFolderCalendar).Items
Set objNS = Nothing
End Sub
Private Sub mcolCalItems_ItemAdd(ByVal Item As Object)
If MsgBox("Möchten Sie diesen Termin veröffentlichen?", vbYesNoCancel,
"Termin veröffentlichen") = vbYes Then
Dim objApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim objFolder As Outlook.MAPIFolder
Dim objDummy As Outlook.MailItem
Dim objRecip As Outlook.Recipient
Dim objAppt As Outlook.AppointmentItem
Dim strMsg As String
Dim strName As String
On Error Resume Next
Set objApp = CreateObject("Outlook.Application")
Set objNS = objApp.GetNamespace("MAPI")
Set objDummy = objApp.CreateItem(olMailItem)
Set objRecip = objDummy.Recipients.Add(strName)
On Error Resume Next
Set objFolder = objNS.Folders.Item("Öffentliche
Ordner").Folders.Item("Alle Öffentlichen Ordner").Folders.Item("Termine
Management")
If Not objFolder Is Nothing Then
Set objAppt = objFolder.Items.Add
If Not objAppt Is Nothing Then
With objAppt
.Subject = "[" & Outlook.Application.Session.CurrentUser & "]
" & Item.Subject
.Body = Item.Body
.Start = Item.Start
.Duration = Item.Duration
.End = Item.End
.Save
MsgBox "Nachricht erfolgreich in [" & objFolder.Name & "]
gespeichert", vbInformation
End With
End If
End If
Set objApp = Nothing
Set objNS = Nothing
Set objFolder = Nothing
Set objDummy = Nothing
Set objRecip = Nothing
Set objAppt = Nothing
End If
End Sub
Wird der Termin im lokalen Kalender bearbeitet (auch löschen), so muss er ja
auch im Öffentlichen Ordner bearbeitet (aktualisiert) werden.
Nun meine FRAGE:
Wie kann ich auf den Kopierten eintrag zugreifen?
Ich könnte ja den Betreff vergleichen. Dabei habe ich aber das Problem, dass
das Übergebene Item in "Private Sub mcolCalItems_ItemChange(ByVal Item As
Object)" schon den Verwendeten Betreff enthält: Außerdem übergibt "Private
Sub mcolCalItems_ItemRemove()" gar keinen Item.
Kann mir vielleicht jemand sagen, wie ich das Öffnen des Termins abfangen
kann?
So könnte ich den Betreff (oder das ganze ITEM) für die Spätere Verwednung
zwischenspeichern.
Ich verwende:
Exchange 2000
Windows 20003 Server
Outlook 2000
Ich wäre für jeden Tipp dankbar!
MfG Eugen Prechel
ich habe von der Programmierung in Outlook wenig Ahnung.
Muss aber ein Makro schreiben, welches bei Termineingabe eine Kopie des
Termins im Öffentlichen Ordner erstellt.
Das Kopieren eines Termins habe ich bereits realisiert:
Dim WithEvents mcolCalItems As Items
Private Sub Application_Startup()
On Error Resume Next
Dim objNS As NameSpace
Set objNS = Application.GetNamespace("MAPI")
Set mcolCalItems = objNS.GetDefaultFolder(olFolderCalendar).Items
Set objNS = Nothing
End Sub
Private Sub mcolCalItems_ItemAdd(ByVal Item As Object)
If MsgBox("Möchten Sie diesen Termin veröffentlichen?", vbYesNoCancel,
"Termin veröffentlichen") = vbYes Then
Dim objApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim objFolder As Outlook.MAPIFolder
Dim objDummy As Outlook.MailItem
Dim objRecip As Outlook.Recipient
Dim objAppt As Outlook.AppointmentItem
Dim strMsg As String
Dim strName As String
On Error Resume Next
Set objApp = CreateObject("Outlook.Application")
Set objNS = objApp.GetNamespace("MAPI")
Set objDummy = objApp.CreateItem(olMailItem)
Set objRecip = objDummy.Recipients.Add(strName)
On Error Resume Next
Set objFolder = objNS.Folders.Item("Öffentliche
Ordner").Folders.Item("Alle Öffentlichen Ordner").Folders.Item("Termine
Management")
If Not objFolder Is Nothing Then
Set objAppt = objFolder.Items.Add
If Not objAppt Is Nothing Then
With objAppt
.Subject = "[" & Outlook.Application.Session.CurrentUser & "]
" & Item.Subject
.Body = Item.Body
.Start = Item.Start
.Duration = Item.Duration
.End = Item.End
.Save
MsgBox "Nachricht erfolgreich in [" & objFolder.Name & "]
gespeichert", vbInformation
End With
End If
End If
Set objApp = Nothing
Set objNS = Nothing
Set objFolder = Nothing
Set objDummy = Nothing
Set objRecip = Nothing
Set objAppt = Nothing
End If
End Sub
Wird der Termin im lokalen Kalender bearbeitet (auch löschen), so muss er ja
auch im Öffentlichen Ordner bearbeitet (aktualisiert) werden.
Nun meine FRAGE:
Wie kann ich auf den Kopierten eintrag zugreifen?
Ich könnte ja den Betreff vergleichen. Dabei habe ich aber das Problem, dass
das Übergebene Item in "Private Sub mcolCalItems_ItemChange(ByVal Item As
Object)" schon den Verwendeten Betreff enthält: Außerdem übergibt "Private
Sub mcolCalItems_ItemRemove()" gar keinen Item.
Kann mir vielleicht jemand sagen, wie ich das Öffnen des Termins abfangen
kann?
So könnte ich den Betreff (oder das ganze ITEM) für die Spätere Verwednung
zwischenspeichern.
Ich verwende:
Exchange 2000
Windows 20003 Server
Outlook 2000
Ich wäre für jeden Tipp dankbar!
MfG Eugen Prechel