Hallo,
eintragen klappt hiermit wunderbar:
Set olApt = olApp.CreateItem(olAppointmentItem)
With olApt
.Body = "TEST"
.AllDayEvent = False
.ReminderMinutesBeforeStart = 0
.Start = Me!TDatum + Me!TZeit
.End = Me!TDatum + Me!TZeitEnde
'.Duration = "45"
.Subject = "Betreff"
.Save
.Move olCal
Me!OutlookID = .EntryID
Ich merke mir also die EntryID damit ich sie zum löschen benötigen kann.
Jetzt das Problem:
Beim löschen suche ich diese entryid und finde sie nicht wieder.
Beim debuggen habe ich mir mal die entryid´s aus outlook angesehen.
Sie sind zwar ähnlich wie die in der Outlookid gespeichtern aber halt nicht gleich.
Als Test habe ich bei OutlookID mal die aus dem Debugger angegeben und es wird gelöscht.
Wo kann der Fehler sein?
Gruß
Johann
Sieh mal hier:
http://accessworld.hoepker.de/outlook-termine-verwalten/outlooktermine-loeschen/
Hallo Andreas,
das löschen mache ich mit so einer Routine.
Problem ist das die EntryID aus den Datensatz nicht gefunden wird.
Die Löschroutine habe ich schon getestet indem ich im Datensatz händisch die richtige EntryID
eingegeben habe. Es wird dann auch der richtige Termin gelöscht.
Es muss meiner Meinung nach schon beim spreichern des Termins die falsche EntryID zum DS
übergeben werden. Frage aber wo und warum?
Gruß
Johann
tatsächlich, der gespeicherte ID ist beim Auslesen anderst. Hier mein Test
0000000027E45245FF76F14685AC31038D80B4E5842D2400
0000000027E45245FF76F14685AC31038D80B4E5A42D2400
Oben: ID beim Speichern
Unten: ID beim Auslesen aus Outlook
Da hast du jetzt natürlich die A...-Karte gezogen und musst dir anderst behelfen.
Es sieht so aus als seien die letzten 8 Ziffern von Änderungen betroffen.
Aber ich hab eine Lösung gefunden. Mit CreationTime wird beim Erstellen des Termins ein Zeitstempel angelegt.
Speichere diesen beim Erstellen zwischen, und durchsuche direkt danach die Outlook-Termine nach diesem Zeitstempel, und du hast die korrekte EntryID.
Beispiel:
Sub Kalendereintrag()
Dim creaTime As Date
Dim olApp As Outlook.Application
Dim olNS As Outlook.NameSpace
Dim olCal As Outlook.MAPIFolder
Dim olApt As AppointmentItem
Set olApt = olApp.CreateItem(olAppointmentItem)
Set olCal = olNS.GetDefaultFolder(olFolderCalendar).Folders("Wettkampftermine")
With olApt
.Body = "Wettkampf in Bodersweier!"
.AllDayEvent = False
.ReminderMinutesBeforeStart = 0
.Start = "24.02.2014 19:30:00"
.End = "24.02.2014 22:00:00"
'.Duration = "45"
.subject = "Wettkampf Lupi"
.Save
.Move olCal
creaTime = .CreationTime
End With
Dim f As Object, olAppt As Object
Set f = olApp.GetNamespace("MAPI").Session.Folders("Outlook-Datendatei").Folders("Kalender").Folders("Training")
Set olAppt = f.Items.Add()
For Each olAppt In f.Items
If olAppt.CreationTime = creaTime Then
Me.OutlookID = olAppt.EntryID
Exit For
End If
Next olAppt
Set olAppt = Nothing
Set f = Nothing
Set olCal = Nothing
Set olNS = Nothing
Set olApt = Nothing
End Sub
Gruß Andreas
Hallo Andreas,
das ist ja von hinten durch die Brust ins Auge.
Aber es funktioniert einfach Klasse.
Danke dafür.
Gruß
Johann
Bitte.
Ich denke wir haben da einen Bug in Office entdeckt. Fragt sich nur steckt der Bug in Outlook oder in Access?
Andreas