Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Outlook-Kalender in Access-Tabelle übertragen

Begonnen von AccesNewBee, September 11, 2019, 15:08:28

⏪ vorheriges - nächstes ⏩

AccesNewBee

Hallo zusammen,

ich bin relativ neu hier, auch mit Access arbeite ich erst seit kurzem.

Im folgenden Code geht es darum , wie die Überschrift schon sagt, ein Outlook-Kalender auszulesen. Ich habe Outlook 2010, Access 2016 und habe Bibliotheken-Verweise integriert.

Ich komme allerdings nicht weiter aufgrund folgender Fehlermeldung:

rs!Cal_EntryID = olAppt.EntryID

"Element in dieser Auflistung nicht gefunden"

Hat jemand da ein Tipp für mich? Ich würde mich über eure Hilfe freuen.

Vielen Dank im Voraus.


Private Sub Outlook_Kalender_Lesen()

'Leeren der temporären Kalendertabelle "Temp_Calendar"

CurrentDb.Execute "Delete * from Temp_Calendar;", dbFailOnError

'Definition der benötigten Variablen

Dim Folder As String
Dim Foldername As String

'Definition eines Recordsets um die in Outlook gelesenen Daten
'in eine temporäre tabelle zu schreiben

Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("Select * from temp_Calendar", dbOpenDynaset, dbSeeChanges)

'Definition des Outlookkalenders der ausgelesen werden soll.

Folder = "iCloud"
Foldername = "Kalender"

'Objektdefinition Outlook

Dim f As Object 'MAPIFolder
Dim olAppt As Object 'AppointmentItem
Dim OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
Set f = OutApp.GetNamespace("MAPI").Session.Folders(Folder).Folders(Foldername)
Set olAppt = f.Items.Add() 'olAppointmentItem

'Durchlaufen aller Outlooktermine im Kalender

For Each olAppt In f.Items

'Nachfolgnde Abfrage stellt sicher, dass nur zukünftige Outlooktermine ausgelesen wernden

If Format(olAppt.Start, "\#yyyy\-mm\-dd\ hh:mm:ss#") >= Format(Date, "\#yyyy\-mm\-dd\ hh:mm:ss#") Then

'Im nachfolgenden Abschnitt werden die wesentlichen Felder aus Outlook in die temporäre Tabelle geschrieben

rs.AddNew
rs!Cal_EntryID = olAppt.entryid
rs!Cal_Info = olAppt.Body
rs!Cal_Date = olAppt.Start
rs!Cal_Date_End = olAppt.End
rs!Cal_All_Day_Event = olAppt.AllDayEvent
rs!Cal_Subject = olAppt.Subject
rs!Cal_outlook_category = olAppt.Categories
rs!Cal_outlook_Timestamp = olAppt.LastModificationTime
rs.Update        'Schreibt aktuellen Termin in die temporäre Tabelle
End If
Next olAppt

End Sub



PhilS

Zitat von: AccesNewBee am September 11, 2019, 15:08:28
Ich komme allerdings nicht weiter aufgrund folgender Fehlermeldung:

rs!Cal_EntryID = olAppt.EntryID

"Element in dieser Auflistung nicht gefunden"
Die Fehlermeldung deutet darauf hin, dass es in deiner Tabelle "temp_Calendar" das Feld "Cal_EntryID" nicht gibt.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

AccesNewBee

Hallo PhilS,
danke für den Hinweis. Das Feld war wohl von der Rechtschreibung her falsch geschrieben. Es gab auch schon Konvertierungsprobleme mit NULL Fehlermeldungen. Aber das habe ich nun hinbekommen.

Eine andere Frage:
Wie kann ich dafür sorgen, dass ich für verschiedene Anwender z.B. , jeweils die Email-Adresse ändern kann?
Durch eine Abfrage ? Dass z.B. derjenige der es nutzt seine Email-Adresse eingibt?
Oder ist es geschickter alle Email-Adressen im Code zu hinterlegen?

PhilS

Zitat von: AccesNewBee am September 11, 2019, 23:38:06
Wie kann ich dafür sorgen, dass ich für verschiedene Anwender z.B. , jeweils die Email-Adresse ändern kann?
Durch eine Abfrage ? Dass z.B. derjenige der es nutzt seine Email-Adresse eingibt?
Oder ist es geschickter alle Email-Adressen im Code zu hinterlegen?
Daten (hier die Emailadressen) im Code zu hinterlegen ist immer die schlechteste Alternative.

Du könntest die Emailadressen in einer Tabelle speichern und den aktuellen Benutzer anhand seines (Windows-)Benutzernamens identifizieren. - Was am meisten Sinn macht, ist schwer zu sagen, ohne deine Anwendung und das Umfeld näher zu kennen.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor