Bei Outlook "Freigegebene Kalender" ansprechen und nicht die StandardMAPI

  • Outlook

Es gibt 52 Antworten in diesem Thema. Der letzte Beitrag () ist von Kleiner_VBAler.

    Dann setze hier einen Breakpoint und ziehe dir MyCalender in das Überwachungsfenster.
    Ist das ein Objekt vom Typ MAPIFolder und wie viele Items sind da drin?

    Ansonsten schau mal nach, wo du MyCalender zuweist.
    Zeig nochmals die ersten 174 Zeilen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    bei "Typ" steht "empty" und der wert ist auch "leer".

    ansonsten ist das die einzige zeile wo irgendetwas von "MyCalender" erwähnt wird und die ist sogar von dir :)

    Visual Basic-Quellcode

    1. Set MyCalender = SharedCalender("alex@testmail.de")
    2. If MyCalender Is Nothing Then MsgBox ("Benutzer nicht gefunden")

    Kleiner_VBAler schrieb:

    Set MyCalender = SharedCalender("alex@testmail.de")

    Dann setz da einen Haltepunkt und step dich mit F8 durch die Funktion SharedCalender durch.
    Wenn da der Resolve schief geht, findet er diese Mailbox bzw. diesen Kalender nicht.

    Vorsichtshalber:
    Die Funktion ​Function SharedCalender hast du aber schon ausserhalb der Sub stehen?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    die adresse findet er gewiss, denn wenn ich als meinen benutzernamen bzw. als e-mail etwas anderes eingebe, dann gibt er mir einen fehler aus, der benutzer würde nicht existieren.
    von daher gehe ich mal davon aus, dass er gefunden wird.

    und japp, die funktion steht außerhalb :)
    mhh, ich kann dir das leider nicht beschreiben :/

    da steht eigtl. kaum was drin, da ich das auch nicht richtig deuten kann, ob ich einen breakpoint richtig gesetzt habe und ob das, was ich gemacht habe überhaupt eine korrekte ausgabe liefert.. das ist mein problem.
    Positioniere den Cursor auf die Zeile nach der Zuweisung .
    Drücke auf F9
    Die Zeile färbt sich rot.
    Damit ist der Breakpoint gesetzt.

    Führe das Programm aus bis es an dem Punkt anhält.

    Falls noch nicht da:
    Ansicht...Überwachungsfenster.
    Markiere MyCalender.
    Ziehe das Markierte ins Überwachungsfenster.
    Jetzt kannst du das Objekt und alle seine Properties mit den +-Markierungen öffnen.

    Wieviele Items sind drin?

    Mit F8 kannst du dann Schritt für Schritt weiter gehen und beobachten, was geht.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Guten Morgen, entschuldige. Gestern kam kurzfristig etwas dazwischen...

    Ich habe dir mal einen Screenshot reingepackt, damit du dir mal ein Bild machen kannst. So sieht das mit dem Element aus, wenn ich es drin habe.

    Edit: Und wenn ich oben die Zuweisung gebreakpoint habe, mich dann mit F8 durchforste, bleibt er bei der Zeile

    Visual Basic-Quellcode

    1. Set MyFolder = MyCalender.Items
    stehen.. lässt sich dann auch nicht weiter durchfahren durch den Code. Und ich sehe ja, dass ihn wahrscheinlich ein Wert fehlt oder? Sonst würde er ja nicht danach fragen, zumindest gehe ich der Vermutung nach...


    Also zum ersten Mal wird ganz oben gesagt, dass

    Visual Basic-Quellcode

    1. Set MyCalender = SharedCalender"alex@testmail.de")
    2. If MyCalender Is Nothing Then MsgBox ("Benutzer nicht gefunden")
    ist. Das ist auch ein Codefragment, welches ich von dir benutze. Jetzt habe ich mal SharedCalender reingezogen und siehe da, dazu kann ich mehr sehen und sogar auf das "+" drücken, da dieser mehr Properties enthält. Hier der Ausschnitt:

    Das sieht schon mal gut aus.
    wenn du jetzt noch die Items aufklappst, solltest du deine Kalendereinträge finden.

    Aber unabhängig davon sollte ​Set MyFolder = MyCalender.Items in dem Fall keine Fehlermeldung hervorrufen.
    Oder ist an dieser Stelle MyCalender irgendwie überschrieben?
    Oder woher kommt die Aussage

    Kleiner_VBAler schrieb:

    bei "Typ" steht "empty" und der wert ist auch "leer".



    Wie ist denn MyFolder definiert?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Mhh, ja vllt. war meine Aussage, dass der Typ empty ist und der wert leer ist, falsch, da ich das falsche in den Überwachungsmonitor gezogen habe...

    Auf jeden Fall bleibt er bei der Zeile

    Visual Basic-Quellcode

    1. Set MyFolder = MyCalendar.Items
    hängen... Obwohl das nicht überschrieben wird. Das ist eine von zwei Zeilen wo MyCalendar erwähnt wird...

    Darüber hinaus habe ich das hier im Code was MyFolder angeht gefunden:

    Visual Basic-Quellcode

    1. 'display containing folder
    2. strCommand = "explorer """ & strTempFolder & """"
    3. objShell.Run (strCommand)
    4. Set objShell = Nothing
    5. Set objFSO = Nothing
    6. On Error Resume Next
    7. objCDO.Logoff
    8. On Error GoTo 0
    9. Set objCDO = Nothing
    10. Set MyFolder = Nothing
    11. Set MyCalendar = Nothing
    12. Set onNamespace = Nothing
    13. Set OL = Nothing


    und außerdem noch das hier:

    Visual Basic-Quellcode

    1. MyFolder.IncludeRecurrences = True
    2. MyFolder.Sort "[Start]"


    und das hier:

    Visual Basic-Quellcode

    1. Set myRestrictItems = MyFolder.Restrict(strRestriction)
    2. myRestrictItems.Sort "[Start]"
    3. 'Contents = Contents & vbCrLf & myRestrictItems.Count & "<br>"
    4. For Each myitem In myRestrictItems
    5. blDisplay = True


    aber ich denke mal, dass man die letzten zwei Codefragmente gekonnt ignorieren kann.
    Setz mal vor die Fehlerzeile folgenden Code:

    Visual Basic-Quellcode

    1. For Each Item In MyCalender.Items
    2. Debug.Print Item.Categories, Item.Start, Item.ConversationTopic
    3. Next
    und steppe ihn mit F8 durch.
    Im Direktfenster müssten dann deine Kalendereinträge ausgegeben werden.
    Funktioniert das?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    petaod schrieb:

    Setz mal vor die Fehlerzeile folgenden Code:

    Visual Basic-Quellcode

    1. For Each Item In MyCalender.Items
    2. Debug.Print Item.Categories, Item.Start, Item.ConversationTopic
    3. Next
    und steppe ihn mit F8 durch.
    Im Direktfenster müssten dann deine Kalendereinträge ausgegeben werden.
    Funktioniert das?




    Japp, er zeigt mir die Einträge aus bevorstehenden und veralteten Kalendereinträgen an. Soweit ich das sehe sind das soweit alle, die mal "geshared" wurden. :)
    Durch das Direktfenster kann man zwar jetzt sehen, dass die items dort gespeichert wurden, allerdings ist der Fehler in der Zeile

    Visual Basic-Quellcode

    1. Set MyFolder = MyCalendar.Items
    immer noch da, bzw. er zeigt mir einen Fehler innerhalb des Outlook VBA an. :/

    Leuchtet mir nicht ein warum, da er eigtl. richtig zugewiesen wurde und auf der anderen Seite ist das Element auch nicht leer...
    Dann gibt es keinen Grund, weshalb Items nicht einer Objektvariablen zugewiesen werden können sollen.
    Wie sieht denn MyFolder vor dem missglückten Zuweisungsversuch aus und (wie) ist sie definiert?

    Ändert sich etwas, wenn du die Variable anders definierst?
    Versuche unterschiedliche Definitionen

    Visual Basic-Quellcode

    1. ​Dim MyFolder As Items
    2. Dim MyFolder As Object
    3. Dim MyFolder As Variant
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Wenn ich "MyFolder" nicht manuell einem Item, Object oder Variant zuweise, dann ist dieser standardmäßig auf "Variant/Empty" gesetzt.

    Habe eine Zuweisung eben probiert, wurde auch dementsprechend vom Überwachungsmonitor erkannt, allerdings ändert das nichts am Fehler. Das kann doch nicht sein, dass es jetzt an dieser Zuweisung jetzt scheitert... Die Items sind, soweit ich das verstanden habe, ordnungsgemäß an MyCalendar übergeben worden, wie ich herausgefunden habe und die Zuweisung zu MyFolder ist doch eigtl. eine ganz normale Angelegenheit... Mensch, Mensch...
    Mhh, ich denke mal, dass das leider nichts bringen wird, da in meinem Quellcode "MyFolder" exakt in der Zeile zum ersten mal drin vorkommt und gleich einen Fehler verursacht. Nachdem ich alles umbenannt habe führt das leider auch zu keinem befriedigendem Ergbnis.
    Entweder bin ich blind auf beiden Augen oder es ist ein Fehler, den man so auf Anhieb gar nicht sieht... Schade, dass du es nicht auf deiner Maschine testen kannst, vllt. hättest du den Fehler dann eher lokalisieren können..