Outlook neue Gruppe im Kalender erstellen

  • Hallo liebe Community,

    da ich schon lang auf dieser Plattform lese, aber dieses Mal für mein Problem keinen Lösungsansatz finde musste ich mich doch mal anmelden ^^. In Outlook möchte ich eine neue Gruppe innerhalb des Kalenders erstellen und dann vorhandene Kalender in diese Gruppe verschieben. Mit Gruppe meine ich die Unterteilungen im linken Navigationsbereich wie z. B. "Mein Kalender", "Kalender von Personen" unter Kalender. Ich habe schon probiert mit der OutlookEX.udf Lösungen zu erstellen, bin jedoch kläglich gescheitert. Hier der aktuelle Code:

    *Edit funktionierender Quellcode Office 2007:

    [autoit]


    #include <OutlookEX.au3>
    #include <Array.au3>

    [/autoit][autoit][/autoit][autoit]

    $oOL = _OL_Open(True)
    $myNamespace = $oOL.GetNamespace("MAPI")
    If $oOL.Explorers.Count = 0 Then
    Global $olFolderDisplayNormal = 0
    Global $oExplorers = $oOL.Explorers
    ;Global $oFolder = $oOL.GetNamespace("MAPI").GetDefaultFolder($olFolderInbox)
    Global $oFolder = $myNamespace.GetDefaultFolder($olFolderCalendar)
    Global $oExplorer = $oExplorers.Add($oFolder, $olFolderDisplayNormal)
    $oExplorer.Display
    EndIf

    [/autoit][autoit][/autoit][autoit]

    $objGroup = _OL_CalendarGroupAdd($oOL, "Meetingsräume")

    [/autoit][autoit][/autoit][autoit]

    $file = FileOpen("Meetingsräume.txt")
    $line = ""
    $ObjList = ObjCreate("System.Collections.ArrayList")
    While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    $folder = _OL_FolderAccess($oOL, "\\"&$line&"\", 9)
    $ObjList.Add($folder[1])
    ;$objNavFolder.Folder.Name = $line
    WEnd
    $objFolder = $ObjList.ToArray
    FileClose($file)

    [/autoit][autoit][/autoit][autoit]

    For $i = 0 To UBound($objFolder) - 1
    $objGroup.NavigationFolders.Add($objFolder[$i])
    Next

    [/autoit][autoit][/autoit][autoit]

    Sleep(1000)
    _OL_Close($oOL)

    [/autoit][autoit][/autoit][autoit]

    Func _OL_CalendarGroupAdd($oOL, $groupname)
    $objPane = $oOL.ActiveExplorer.NavigationPane
    $olModuleCalendar = 1
    $objModule = $objPane.Modules.GetNavigationModule($olModuleCalendar)
    $objGroup = $objModule.NavigationGroups.Create($groupname)
    Return $objGroup
    EndFunc

    [/autoit]

    Hoffen ihr könnt mir weiterhelfen.

    Mit freundlichem Gruß,

    22 Mal editiert, zuletzt von skripty (6. Juni 2013 um 18:28)

  • Kann's derzeit nicht testen, aber mir fällt auf, dass Du 2x _OL_Open und _OL_Close im Skript hast.
    Stelle eine Verbindung zu Outlook am Anfang des Skriptes her (_OL_Open) und beende sie am Ende des Skripts _OL_Close.

  • Ja stimmt danke, aus der Funktion kann ich es rausnehmen und einfach $oOL mitgeben.

  • Haben wir schon geklärt, von welcher Outlook Version wir hier sprechen?

  • Ein guter Startpunkt (wenn auch nur in VB) findet sich bei MSDN hier .

  • Outlook 2007. Danke für den Link, schau ich mir sofort an. Gruppen kann ich jetzt erstellen, nochmals vielen Dank der Link war sehr hilfreich. Werde noch probieren eine AutoIT-Funktion daraus zu machen und diese hier Posten. Jetzt muss ich die Kalender nur noch in die neue Gruppe verschieben, ich glaube aber der MSDN-Eintrag kann mir auch hier behilflich sein. Water vielen vielen Dank.

    3 Mal editiert, zuletzt von skripty (16. Mai 2013 um 12:30)

  • So wie ich das verstehe, verschiebst Du die Kalender nicht, sondern trägst sie nur in Navigations-Gruppen ein (wie Links).
    Ich schaue mir gerade das Thema Navigation an und denke, dass ein paar Funktionen im OutlookEX UDF hilfreich sind. Fange an zu coden - sobald es mal wieder regnet.

  • Ein Problem das ich habe ist, dass _OL_FolderAccess nicht richtig klappt. Ich bekomme jedes Mal diese Ausgabe:

    OutlookEx UDF version = 0.9.0
    @AutoItVersion = 3.3.8.1
    @AutoItX64 = 0
    @Compiled = 0
    @OSArch = X86
    @OSVersion = WIN_XP
    Scriptline = 1198
    NumberHex = 80020009
    Number = -2147352567
    WinDescription =
    Description = Zugriff verweigert
    Source = Microsoft Office Outlook
    HelpFile =
    HelpContext = 0
    LastDllError = 0

    der freigegebene Kalender wird jedoch hinzugefügt. Mir fehlt dann einfach das FolderObject, was ja brauche um es der Gruppe zuzuordnen.

    Einmal editiert, zuletzt von skripty (16. Mai 2013 um 14:37)

  • Kannst Du bitte posten, wie Du _OL_FolderAccess aufrufst?

  • Versuch mal: _OL_FolderAccess2($oOL, "\\Testraum01\", 9)

  • Ja das war es, gibt es doch nicht ^^.

    [autoit]


    $folder = _OL_FolderAccess($oOL, "\\Testraum01\", 9)
    $objFolder = $folder[1]
    $objPane = $oOL.ActiveExplorer.NavigationPane
    $olModuleCalendar = 1
    $objModule = $objPane.Modules.GetNavigationModule($olModuleCalendar)
    $objGroup = $objModule.NavigationGroups.Create($groupname)
    ;$objGroup = $objModule.NavigationGroups.Item(3)
    $objNavFolder = $objGroup.NavigationFolders.Add($objFolder);diese hier

    [/autoit]

    Jetzt kriege ich bei der letzten Zeile die Fehlermeldung:

    OutlookEx UDF version = 0.9.0
    @AutoItVersion = 3.3.8.1
    @AutoItX64 = 0
    @Compiled = 0
    @OSArch = X86
    @OSVersion = WIN_XP
    Scriptline = 59
    NumberHex = 80020009
    Number = -2147352567
    WinDescription =
    Description = Zugriff verweigert
    Source = Microsoft Office Outlook
    HelpFile =
    HelpContext = 0
    LastDllError = 0

    Auch wenn ich über Item direkt eine Gruppe anspreche. In VBA funktioniert es, gut hier ist es aber auch kein freigegebener Kalender.

    Einmal editiert, zuletzt von skripty (16. Mai 2013 um 16:45)

  • Ja das war es, gibt es doch nicht ^^.

    War aber auch nicht ganz ersichtlich. Kommt in die Doku.
    Prüf mal, ob $objFolder auch tatsächlich ein Objekt ist:

    [autoit]

    msgBox(0, "", IsObj($objFolder))

    [/autoit]
  • [autoit]

    MsgBox(0,"",IsObj($objFolder))

    [/autoit]

    Ausgabe = 1, ja ist ein Objekt. Geht jetzt auch, kann man den Anzeigenamen der Kalender irgendwie ändern? Momentan ist es immer "Kalender - Testraum01". Nur Testraum wäre natürlich schöner und ich muss Outlook starten damit es funktioniert. Aktualisierter Quellcode im ersten Post.

    3 Mal editiert, zuletzt von skripty (17. Mai 2013 um 08:15)

  • Was meinst Du mit "geht jetzt auch"? ist das Problem mit "Zugriff verweigert" erledigt? Falls ja, was hast Du geändert?
    Manuell geht es bei mir, ich suche noch eine Möglichkeit das über COM zu machen.
    Warum musst Du Outlook starten, damit es funktioniert? Sollte nicht notwendig sein.

  • Der Name müsste sich wie folgt setzen lassen:
    $objNavFolder.Folder.Name = "xxx"

  • Das ist ja das seltsame ich habe nichts geändert, habe das Skript heute Morgen nochmal ausgeführt und die Kalender wurden wunderbar zur Gruppe hinzugefügt. Mit dem Namen, danke na klar ich Idiot ^^. Wenn ich Outlook nicht starte kann ich die Gruppe nicht anlegen, _OL_FolderAccess() funktioniert auch ohne Outlookstart.

  • Sollte aber kein Unterschied sein. Wenn Du _OL_Open aufgerufen hast, dann ist Outlook gestartet - wenn auch nur im Hintergrund.

  • Ja das wäre auch wunderbar, geht aber trotzdem nicht.

    Zu dieser Skriptzeile:

    [autoit]


    $objPane = $oOL.ActiveExplorer.NavigationPane

    [/autoit]


    erhalte ich diese Meldung:

    OutlookEx UDF version = 0.9.0
    @AutoItVersion = 3.3.8.1
    @AutoItX64 = 0
    @Compiled = 0
    @OSArch = X86
    @OSVersion = WIN_XP
    Scriptline = 47
    NumberHex = 000000A9
    Number = 169
    WinDescription = Variable must be of type 'Object'.
    Description =
    Source =
    HelpFile =
    HelpContext = 0
    LastDllError = 0
    ========================================================

    Zu dieser Zeile:

    [autoit]


    $objModule = $objPane.Modules.GetNavigationModule($olModuleCalendar)

    [/autoit]


    diese Meldung.

    OutlookEx UDF version = 0.9.0
    @AutoItVersion = 3.3.8.1
    @AutoItX64 = 0
    @Compiled = 0
    @OSArch = X86
    @OSVersion = WIN_XP
    Scriptline = 51
    NumberHex = 00000002
    Number = 2
    WinDescription = Not an Object type
    Description =
    Source =
    HelpFile =
    HelpContext = 0
    LastDllError = 0
    ========================================================

    Und zum Abschluss noch ein:
    U:\Documents\Skripte\Meetingsräume.au3 (55) : ==> Error in expression.:
    $objGroup = $objModule.NavigationGroups.Create($groupname)
    $objGroup = ^ ERROR

    Das nächste Problem ist das mir schon wieder Zugriffsberechtigungen fehlen:

    [autoit]


    $folder = _OL_FolderAccess($oOL, "\\Testraum01\", 9)
    $objFolder = $folder[1]
    $objNavFolder = $groupObj.NavigationFolders.Add($objFolder)
    $objNavFolder.Folder.Name = "Testname"

    [/autoit]


    Ausgabe zur letzten Zeile (die vierte im Auszug darüber):

    OutlookEx UDF version = 0.9.0
    @AutoItVersion = 3.3.8.1
    @AutoItX64 = 0
    @Compiled = 0
    @OSArch = X86
    @OSVersion = WIN_XP
    Scriptline = 26
    NumberHex = 80020009
    Number = -2147352567
    WinDescription =
    Description = Sie besitzen nicht die erforderliche Berechtigung, um diesen Vorgang auszuführen.
    Source = Microsoft Office Outlook
    HelpFile =
    HelpContext = 0
    LastDllError = 0
    ========================================================

    Ich dachte eigentlich, wenn ich das NavObj ändere gibt es hier keine Probleme. Das ich den Namen des freigegebenen Kalenders nicht ändern kann ist ja klar. Aktueller Quelltext im ersten Post. Sry das ich so viel nerve ;)

    5 Mal editiert, zuletzt von skripty (17. Mai 2013 um 12:04)