Clever-Excel-Forum

Normale Version: [Excel 2016 VBA] Eintragung in bestimmten Outlook Kalender
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moin!

Ich versuche gerade einen Termineintrag über VBA in einen Outlook Kalender einzutragen. Dies funktioniert an sich auch mit folgendem Code:

Code:
Sub Schaltfläche1_Klicken()

'Variablen dimensionieren
Dim oApp As New Outlook.Application
Dim oTermin As Outlook.AppointmentItem
Set oTermin = oApp.CreateItem(olAppointmentItem)

'Termin erstellen
With oTermin
    .Subject = Tabelle1.Range("A2").Value & " " & Tabelle1.Range("B2").Value
    .Start = Tabelle1.Range("D2").Value
    .AllDayEvent = True
    .Body = "Wiedervorlage des Vorgangs " & Tabelle1.Range("B2").Value
    .Save
End With

'Variablen leeren
Set oApp = Nothing
Set oTermin = Nothing

End Sub

Problematik ist jetzt, dass es in einen bestimmten Kalender eingetragen werden muss, jedoch nur in den Profileigenen Kalender eingetragen wird. In Outlook unter Meine Kalender existieren mehrere Kalender und in einen von diesen muss der Eintrag.

Wie bekomme ich es hin, auf diesen bestimmten Kalender zu verweisen? Hinzu kommt, dass der Kalender von einem anderen Eigenständigen Profil in Outlook kommt, ich habe jedoch Vollzugriff darauf.

Bin für jegliche Hilfe dankbar!

Lieber Gruß
Hallöchen,

lies mal den Thread durch:

Makro-fuer-Massenmutation-im-Kalender
Moin!

Danke für den hilfreichen Link. Es hapert nur an einer bestimmten Stelle und ich weiß einfach nicht warum.

Code:
Set objCalendar = objNS.Folders("meins@meins.de").Folders("Kalender")
Set objCalendar = objCalendar.Folders("Kalendername")

Wenn ich meine persönliche Mail eingebe wird das objCalendar in der ersten Zeile richtig befüllt. Dann wird aber in der zweiten Zeile der Kalender nicht gefunden. Wie gesagt, es handelt sich um einen für mehrere Personen freigegeben Kalender mit einem eigenen E-Mail Profil. Versuche ich es dann mit der Mail vom Kalenderprofil wird aber schon in der ersten Zeile ein Fehler ausgeworfen.
Das Problem mit dem Kalender konnte ich nun selbst beheben, indem ich mir die Daten innerhalb der Objekte angesehen habe und damit herausgefunden habe, dass die freigegeben Kalender über dem eigentlichen Kalender Ordner liegen.

Jetzt ergibt sich noch folgendes Problem. Die Suche nach den vorhandenen Terminen funktioniert schonmal. Leider wird die Eintragung aber nicht in dem Kalender gemacht, in dem sie gemacht werden soll.

Code:
Do While Worksheets("Tabelle1").Cells(Zeile, 1) <> ""

    For Each objItem In objCalendar.Items
        If objItem.Subject = Tabelle1.Range("A" & Zeile).Value & " " & Tabelle1.Range("B" & Zeile).Value Then
            Vorhanden = True
        End If
    Next

    If Vorhanden = False Then
         Set objItem = objApp.CreateItem(olAppointmentItem)
        'Mit dem Kalendereintrag
        With objItem
        'Eigenschaften des Kalendereintrages
        .Subject = Tabelle1.Range("A" & Zeile).Value & " " & Tabelle1.Range("B" & Zeile).Value
        .Start = Tabelle1.Range("D" & Zeile).Value
        .AllDayEvent = True
        .Body = "Wiedervorlage des Vorgangs " & Tabelle1.Range("B" & Zeile).Value
        .Save
        'Ende Mit dem Kalendereintrag
        End With
    End If
    Zeile = Zeile + 1
Loop

Wie bekomme ich den neuen Termin jetzt in den richtigen Kalender?
Hallöchen,

ich hab da im verlinkten Thread z.B. irgendwo

For Each objItem In objCalendar.Items

gehabt. Du hast nun

Set objItem = objApp.CreateItem(olAppointmentItem)
Zeig mal erst ein übersicht deiner Outlook folders (Bildschirmfoto)

dass könnte dann so aussehen:


Code:
with createobject("outlook.application").namespace("MAPI").folders(4).folders("INBOX").createitem

end with
Dann wird das neue Item bestimmt im  korrekten Folder gespeichert.

Application.createitem verwendet nur die Defaultfolders.

Schau mal https://www.snb-vba.eu/VBA_Outlook_external_en.html#L_0
Das waren die richtigen Hinweise! Vielen Dank!

Code:
         Set objItem = objCalendar.Items.Add(olAppointmentItem)

Ein neues Objekt zu den Items des Kalenders hinzuzufügen, war dann die passende Lösung. (Macht ja auch Sinn)