Mittels Excel Makro einen Notes Kalendereintrag erstellen

  • Hallo liebe Leute!


    Bin ganz neu hier - nicht nur im Forum, sondern auch was die Materie betrifft.


    Ich hätte gerne ein Excel Makro (Klick auf einen Button in Excel), wodurch ein Notes Kalendereintrag, z.B. ein Termin automatisch im Kalender erstellt wird.


    Folgender Versuch funktioniert leider nicht (dadurch wird nur ein Entwurf eines Termins bei den Entwürfen abgelegt, nicht jedoch im Kalender):


    Sub Kalendereintrag()
    Dim session As Object
    Dim db As Object
    Dim doc As Object


    Set session = CreateObject("Notes.Notessession")
    Set db = session.getdatabase("servername", "dbname.nsf")


    Set doc = db.Createdocument("($Calendar)")
    doc.form = "Appointment"
    doc.Startdate = "14.05.2004"
    doc.Enddate = "14.05.2004"
    doc.Starttime = "12:00:00"
    doc.Endtime = "13:00:00"
    doc.AppointmentType = "0"
    doc.Subject = "test excel"


    Call doc.ComputeWithForm(True, False)
    Call doc.Save(True, False)


    End Sub


    Hoffe sehr, dass mir jemand helfen kann; wäre sehr dankbar darüber.


    Danke,
    LG aus Wien,
    Flo

    • Offizieller Beitrag

    Also im Notes würde ich das doc im UI aufrufen, speichern und verlassen. Vielleicht funktioniert es auch von Excel aus.



    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Danke für die Info, aber leider funktioniert es aus Excel heraus nicht... und genau das bräucht ich...


    Vielleicht hast Du oder jemand anders noch einen Tipp für mich?


    Danke,
    LG,
    Flo

  • Hallo liebe Leute!


    Nachdem ihr mir da wunderbar helfen konntet und dieses Excel-Makro nun seit ein paar Wochen super funktioniert, werden die Anforderungen inzwischen höher...
    Und da gibt es nun leider noch einen Stolperstein für mich:


    Will man sich erinnern lassen - z.B. 1 Tag vorher - braucht man unter anderem


    doc.$AlarmOffset = -1440


    Nur leider kann Excel mit dem Dollar-Zeichen nichts anfangen.
    Wie kann ich das umgehen, könnt ihr mir da evtl. auch helfen? Wäre echt supertoll!


    Danke schonmal,
    LG,
    Flo

  • Hm, das hat mir leider nicht geholfen.


    Konkret geht es um folgendes: Das Excel-Makro läuft wunderbar ab, solange der User Lotus Notes bereits vor dem Makro-Start geöffnet hatte!


    Für den Fall, dass der User Lotus Notes noch nicht gestartet hatte; sprich, dass Lotus Notes erst DURCH das Makro gestartet wird, hab ich noch keine Lösung gefunden... das Makro beginnt zwar zu laufen, doch am Ende erhalte ich die Fehlermeldung, dass der Befehl (Set uidoc = ws.EditDocument(True, doc)) vom Notes Arbeitsbereich aus nicht ausgeführt werden kann.


    (Deshalb meine Frage mit der Kalenderansicht öffnen, allerdings hat mir das wie gesagt leider nicht weitergeholfen.)


    Sorry für meine vermutlich laienhaften Fragen, aller Anfang ist leider schwer.


    Nochmal das Makro, wie es jetzt ist:


    Sub KalendereintragvonExcelzuNotes()


    Dim session As Object
    Dim db As Object
    Dim doc As Object
    Dim ws As Object
    Dim uidoc As Object


    Set ws = CreateObject("Notes.NotesUIWorkSpace")
    Set session = CreateObject("Notes.Notessession")
    Set db = session.getdatabase("Server", "MAILdb.nsf")


    Set doc = db.Createdocument


    Call doc.ReplaceItemValue("$AlarmOffset", -1440)
    Call doc.ReplaceItemValue("$Alarm", "1")


    With doc
    .form = "Appointment"
    .Startdate = "19.07.2004"
    .Enddate = "19.07.2004"
    .Starttime = "10:00:00"
    .Endtime = "11:00:00"
    .AppointmentType = "0"
    .Subject = "test excel"
    .CalendarDateTime = "19.07.2004 10:00:00 CEDT"
    .StartDateTime = "19.07.2004 10:00:00 CEDT"
    .EndDateTime = "19.07.2004 11:00:00 CEDT"
    .Alarms = "1"
    End With


    Set uidoc = ws.EditDocument(True, doc)
    Call uidoc.Save
    Call uidoc.Close


    End Sub



    D A N K E !!!


    LG, Flo

    • Offizieller Beitrag

    speicher das Dokument vor dem Set uidoc = ws.EditDocument... ab.


    Also zwischen ".Alarms = "1" und "End With" noch ".Save True, False, True" einfügen.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Ich hatte mal ein ähnliches Problem. Das "ComputeWithForm" funktioniert nur wenn du korrekte Datentypen übergibst. Die Kalenderansicht kannst du direkt aufrufen, die weiss schon in welchem Kontext sie angezeigt wird...



    Dim session As Object
    Dim db As Object
    Dim doc As Object
    Dim ws As Object
    Dim uidoc As Object


    Const ServerName = "ServerName"
    Const MailDBName = "MailDBName"


    Set ws = CreateObject("Notes.NotesUIWorkSpace")
    Set session = CreateObject("Notes.Notessession")
    Set db = session.getdatabase(ServerName, MailDBName)


    Set doc = db.Createdocument


    Call doc.ReplaceItemValue("$AlarmOffset", -1440)
    Call doc.ReplaceItemValue("$Alarm", "1")


    With doc
    .form = "Appointment"
    .startdate = CDate("30.06.2004")
    .enddate = CDate("30.06.2004")
    .Starttime = CDate("30.06.2004 10:00:00")
    .Endtime = CDate("30.06.2004 11:00:00")
    .AppointmentType = "0"
    .Subject = "test excel"
    .CalendarDateTime = CDate("30.06.2004 10:00:00")
    .StartDateTime = CDate("30.06.2004 10:00:00")
    .EndDateTime = CDate("30.06.2004 11:00:00")
    .Alarms = "1"
    End With


    Call doc.ComputeWithForm(True, False)
    Call doc.Save(True, False)
    Call ws.OpenDatabase(ServerName, MailDBName, "($Calendar)")

  • Die Variante mit ComputeWithForm funktioniert leider gar nicht bei mir - ich enthalte damit immer nur einen Entwurf.


    Aber Du hast mich auf eine Idee gebracht mit dem OpenDatabase... hab das gleich nach Getdatabase nochmal verwendet und jetzt funktionierts perfekt - egal ob Notes bereits geöffnet war oder nicht!


    Danke für Eure Hilfe erstmal und bis zum nächsten Mal!


    LG,
    Flo