Gruppenkalender-Einträge per VBA-Makro aus Excel

  • Hallo Leute,


    ich habe ein gewisses Problem mit der DvAPI.


    Um den Zusammenhang zu erklären fange ich einfach mal von ganz vorne an:


    Ich habe für meine Firma ein Programm im Excel mit einigen VBA-Makros getextet, um gewisse Abläufe für die Mitarbeiter zu automatisieren und zu vereinfachen.
    Nun kam der Wunsch einiger Kollegen auf, dass doch, wenn möglich, die von ihnen eigegebenen Versandtermine per Klick auf einen Button automatisch in dem entsprechenden "Versand"-Gruppenkalender im Tobit eingetragen werden.
    So weit eigentlich kein großes Problem. Das Automatische Eintragen über die DvAPI habe ich schon hinbekommen.


    Jetzt kommt das große ABER:


    Die Kollegen nutzen den Kalender etwas "seltsam". Die Termine sind lediglich auf einen Tag festgelegt und nicht auf eine Urhzeit bzw. einen Zeitraum. Und es ist so, dass die Termine, für eine "bessere" Übersicht nun automatisch an dem gewissen Tag immer untereinander erscheinen sollen. Also angenommen für Tag "X" ist noch kein Eintrag im Kalender soll der erste Termin für Tag "X" beginnen um 8 Uhr und enden um 8:30 Uhr, der zweite Termin für Tag "X" soll dann beginnen um 8:30 Uhr und enden um 9 Uhr....usw usw usw. bis maximal 22 Uhr. damit quasi jeder Termin übersichtlich untereinander erscheint. Sollten für Tag "X" die Einträge nun über 22 Uhr hinaus gehen, soll der nächste Termin wieder bei 8 Uhr beginnen und bei 8:30 Uhr enden, sodass er dann neben dem ersten Eintrag erscheint.


    Und genau da fängt mein Problem an, da ich nicht weiß, wie ich herausbekommen soll, wie viele Einträge an dem gewünschten Tag "X" eventuell schon im Kalender vorhanden sind und welche Zeiten diese haben.


    Ich hoffe ihr könnt mir einigermaßen folgen und mir einen Rat geben. Die Dokumentation der DvAPI hat mir da leider nur wenig helfen können ?(


    Also, ich hoffe, dass mir hier jemand helfen kann und dass ich hier nix doppelt gepostet hab.


    Bis denn dann und mfG und so


    Tobias :sleeping:


    P.S.: Fast vergessen..... David Version ist die FX 12.00a.2654 mit entsprechend aktuellster DvAPI32

  • Hallo Tobias,


    ich verstehe das Problem nicht richtig...Du musst doch nur die bestehenden Termine aus dem Kalender auslesen, untersuchen und dann die entsprechenden Eintragungen vornehmen...oder nicht?


    Was genau ist also Dein Problem?
    Das Auslesen der Termine? Da gibt es soweit ich es gerade im Kopf habe Beispiele in der Doku.


    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Hallo Jens,


    danke schon mal für die schnelle Antwort.


    Mein Problem ist, dass ich nicht ganz weiß, wie ich herausfinden soll wie viele Kalendereinträge an einem bestimmten Tag schon vorhanden sind und welche Startzeiten diese Einträge haben.


    Ich hab mit der Doku bisher nur gefunden, wie ich ALLE Items zählen lassen kann und dann muss ich den Item.Type abfragen, ob es ein CalenderItem ist und sowas alles.
    Aber ich will ja nicht jedesmal erst sämtliche Einträge zählen lassen und ermitteln was es für ein Typ ist etc.
    Ich will einfach rausfinden wie viele Kalendereinträge an Tag "X" vorhanden sind und welche Startzeit der letzte Eintrag hat um die Startzeit für meinen neuen Termin zu generieren.


    Oder denke ich jetzt irgendwie zu kompliziert? ?(


    Momentan sieht mein provisorischer Code so aus:



    Der führt halt leider bisher nur so halb zum Ziel :S


    Gruß Tobias

  • Hallo Tobias


    prinzipiell muss man genau so vorgehen.
    Soweit ich weiß kann man eine Datumseingrenzung bei der Abfrage machen, bin aber nicht sicher ob die wirklich (gut) funktioniert.


    ...


    Habe gerade mal nach gesehen. Schau Dir mal die Methode "GetArchiveEntries" vom Objekt "Archive" an. Da ist ein Beispiel für eine Datumseingrenzung von E-Mails über die StatusTime. Vielleicht geht das auch mit der StartTime.


    Gruß Jens

    Es wäre schön, Deinen Vornamen zu kennen. Bitte beachte unsere Forenregeln und die Netiquette.

    ----------

    Bitte teilen/weitersagen: STARFACE Module Databasewww.sfm-db.com


    STARFACE Excellence PartnerSTARFACE Module CreatorTobit.Software Authorized Partner (Mailserver/Unified Messaging)work4all! Solution Partner (CRM/ERP)Securepoint Professional Partner (Firewall/UTM)


    1 Qubit - J.Suingwww.1qubit.deSoftware - Service - Coding

  • Hi Jens,


    danke für den Tipp bezüglich GetArchiveEntries.
    Ich werde das jetzt bei Gelegenheit testen und mich dann mit nem Feedback nochmal melden.


    Besten Dank soweit und schöne Grüße


    Tobias

  • So, ich hab das ganze nun mal getestet und funktioniert soweit auch alles richtig gut.


    Aber eine Sache verwirrt mich grade ziemlich.


    Wenn ich mit folgendem Quellcode:



    Einen Eintrag im David-Kalender erzeugen lasse, erscheint der genau dort wo er soll.
    Wenn ich nun aber mit


    Code
    Set oItems = oArchive.GetArchiveEntries("Default StatusTime=" & """" & format(Sheets("AV-Programm").Range("W10").Value, "MM" & "-" & "DD" & "-" & "YYYY") & " 08:00:00 - " & format(Sheets("AV-Programm").Range("W10").Value, "MM" & "-" & "DD" & "-" & "YYYY") & " 22:00:00" & """")
    
    MsgBox (oItems.Count)


    zählen und anzeigen lasse, wie viele Einträge an diesem Tag im Kalender enthalten sind sagt er mir 0.


    Lege ich nun auf dem "normalen" Weg per Doppelklick im Kalender selber einen Termin an und lasse mir mit dem selben Quellcode
    wieder die Anzahl der Einträge anzeigen sagt er mir 1 (das was ich eigentlich auch haben will).


    Warum wird mein automatisch generierter Eintrag per VB-Makro nicht gezählt/erkannt obwohl er im Kalender korrekt erscheint? ?(


    Schöne Grüße


    Tobias


    Edit:


    Selbst mit dieser Variante geht es nicht:

    Code
    Set oCalendarItem = oArchive.CreateArchiveEntry(DvCalendarItem)
    
    	oCalendarItem.Subject = "#" & format(Sheets("AV-Programm").Range("H14").Value, "00000") & " " & Sheets("AV-Programm").Range("M6").Value & " | BV: " & Sheets("AV-Programm").Range("M15").Value
    	oCalendarItem.Content = "AV-Nummer: " & format(Sheets("AV-Programm").Range("H14").Value, "00000") & vbCrLf & "Kunde: " & Sheets("AV-Programm").Range("M6").Value & vbCrLf & "BV: " & Sheets("AV-Programm").Range("M15").Value
    	oCalendarItem.LabelIndex = 10
    	oCalendarItem.SendTime = CDate(Sheets("AV-Programm").Range("W10").Value & " " & Start)
    	oCalendarItem.StopTime = CDate(Sheets("AV-Programm").Range("W10").Value & " " & Start)
    	oCalendarItem.Save
  • Kommando zurück.


    Habe meinen Fehler gefunden.


    Ich hab "vergessen" beim erzeugen des Eintrags per Makro die StopTime korrekt zu übergeben (war fälschlicherweise die gleiche zeit wie die StartTime bei mir :rolleyes: *blöd* ) und dann findet er den Termin nicht.


    Also funktioniert nun alls genau so wie ich das wollte und läuft wie ein Donnerwetter.


    Der Hinweis bezüglich "GetArchiveEntries" mit Sortierung nach "StatusTime" war die perfekte Lösung für mein Problem.


    In diesem Sinne riesen Dank für die Hilfe! :thumbup:


    Schöne Grüße


    Tobias

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!