Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: In Outlook (Exchange) Serientermin erstellen

In Outlook (Exchange) Serientermin erstellen
18.04.2024 15:53:31
Michael Grenzheuser
Hallo,
könnte mir jemenad helfen?

Ich bin gerade dabei, dass ich in Outlook einen Kalendereintrag "Geburtstage" anlegen kann.
Der Kalender ist in Exchange freigegeben und kann auch angesprochen und der Termin eingetragen werden.

Leider bekomme ich es nicht hin, dass sich der Termin ab Startdatum jährlich wiederholt.
Was mache ich falsch?

Vielen Dank für eure Hilfe


PS: im Internet findet man dazu eine Lösung, aber die geht nur auf den persönlichen Kalender und nicht auf einen freigegebenen Kalender unter Exchange.



Private Sub CommandButton1_Click()

Dim objOutlook As Outlook.Application
Dim objNameSpace As Object
Dim objFolder As Object
Dim objDummy As Object
Dim objRecipient As Object
Dim objAppt As Object

Dim OutPattern As RecurrencePattern

Dim TestDatum as String

TestDatum = "18.04.2024"


'------------- Abfrage, ob Outlook vorhanden ist ---------------------------
On Error Resume Next
Set objOutlook = GetObject("", "Outlook.Application")
On Error GoTo 0
If objOutlook Is Nothing Then
On Error Resume Next
Set objOutlook = GetObject("Outlook.Application")
On Error GoTo 0
If objOutlook Is Nothing Then
MsgBox "Outlook is not available!"
Exit Sub
Else
Set objOutlook = Nothing
End If
End If

'------------- Abfrage, ob Geb-Datum ausgefüllt ist -----------------------------

If MsgBox("Möchten Sie wirklich an den Geburtstag erinnert werden?", vbYesNo) = vbYes Then
'------------- bestimmter anderer Kalender festlegen -----------------------
strName = "GebTag" 'internal mail address (Exchange) - Name vom Kalender

'------------- Definitionen ------------------------------------------------
Set objOutlook = CreateObject("Outlook.Application")
Set objNameSpace = objOutlook.GetNamespace("MAPI")
Set objDummy = objOutlook.CreateItem(olAppointmentItem)
Set objRecipient = objDummy.Recipients.Add(strName)

objRecipient.Resolve

'------------- In Kalender eintragen ---------------------------------------
If objRecipient.Resolved Then
Set objFolder = objNameSpace.GetSharedDefaultFolder(objRecipient, olFolderCalendar)
If Not objFolder Is Nothing Then
Set objAppt = objFolder.Items.Add
If Not objAppt Is Nothing Then
With objAppt
'set default appointment values
.MeetingStatus = olMeeting

.AllDayEvent = True
.Subject = "Geburtstag von: "
.Location = "(wird bekannt gegeben)"

.Body = "in Outlook eingetragen am: " & Date

.Start = TestDatum
'.Resources = ""
.Categories = "Geburtstage"
.ReminderMinutesBeforeStart = 120
.ReminderPlaySound = True
.ReminderSet = True

'In Serientermin umwandeln
Set OutPattern = objDummy.GetRecurrencePattern
With OutPattern
.RecurrenceType = olRecursYearly
'.PatternStartDate = .Start
'.PatternStartDate = TestDatum
'.Duration = 1440
'.Interval = 1
'.Occurrences = 3
.NoEndDate = True
End With

.Save
.Display True
End With
End If
End If
Else
MsgBox "Der Kalender " & Chr(34) & strName & Chr(34) _
& " konnte nicht gefunden werden!", vbCritical, "Kalender nicht gefunden"
End If
End if

'------------- alles zurücksetzen ------------------------------------------
Set objOutlook = Nothing
Set objNameSpace = Nothing
Set objFolder = Nothing
Set objDummy = Nothing
Set objRecipient = Nothing
Set objAppt = Nothing

'------------- Erfolgsmeldung ----------------------------------------------
MsgBox "Der Termin wurden erfolgreich in den Kalender " & Chr(34) & strName & Chr(34) _
& " eingetragen!", vbInformation, "Erfolgreich eingetragen"

End If
End If
End Sub


Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: In Outlook (Exchange) Serientermin erstellen
18.04.2024 17:01:09
Yal
Hallo Michael

Du verwendest "Late Binding" (CreateObject(...)"). Funktioniert ganz gut, hat aber Nachteile. Ich schlage vor, "early binding" zu verwenden.
Es geht so: in Visual Basic Editor, gehe im Menü "Extras", "Veweise...", scroll runter und setze eine Haken bei "Microsoft Outlook 16.0 Object Library"

Damit kannst Du
- deine Variable typengenau definieren: Dim objNameSpace As NameSpace
- Intellisense: tippe "objNameSpace." dann kommen sofort die für diese Objekt verfügbare Methoden und Eigenschaften
- alle Outlook-Objektinformationen im Objekt-Katalog: Menü Ansicht, Objekt-Katalog, ein Objektname eingeben und suchen lassen
- vollständige Kompilierungsprüfung, um Fehler im Voraus zu entdecken: Menü Debuggen, Kompilieren von VBAProjekt

Hauptsächlich im Objekt-Katalog kannst Du im Objekt "AppointmentItem" die Eigenschaften "Reccurence" und die Methode "GetReccurencePattern" (kennst Du ja schon). Mit letzterem kannst Du gezielt googeln und folgende Artikel mit passendem Beispiel finden:
https://learn.microsoft.com/en-us/office/vba/api/outlook.recurrencepattern.getoccurrence

VG
Yal
Anzeige
AW: In Outlook (Exchange) Serientermin erstellen
24.04.2024 15:20:09
krug96
Hallo Yal,

vielen Dank für Deinen Hinweis und Deine Mühe.
Ich habe das Problem wie folgt gelöst bekommen:

statt:
'In Serientermin umwandeln

Set OutPattern = objDummy.GetRecurrencePattern
With OutPattern
.RecurrenceType = olRecursYearly
'.PatternStartDate = .Start
'.PatternStartDate = TestDatum
'.Duration = 1440
'.Interval = 1
'.Occurrences = 3
.NoEndDate = True
End With


habe ich
'In Serientermin umwandeln

Set OutPattern = objAppt.GetRecurrencePattern
With OutPattern
.RecurrenceType = olRecursYearly
.NoEndDate = True
End With



und statt
Set objAppt = objFolder.Items.Add



habe ich
Set objAppt = objFolder.Items.Add(olAppointmentItem)


verwendet.

Jetzt funktioniert es so, wie ich mir das vorgestellt habe.
Vielen Dank.


PS: was ich noch nicht rausgefunden habe ist, warum das mit dem Wert ".Interval" nicht funktioniert. Vielleicht "stolpere" ich da noch im Web drüber.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige