none
Outlook 2010: Termin in selektierten Kalender eintragen RRS feed

  • Frage

  • Hallo zusammen,

    ich hoffe, ich bin hier richtig.

    Zur Zeit versuche ich ein Problem zu lösen. Bin jedoch noch nicht wirklich weiter gekommen.

    Die Ausgangslage: wir betreiben einen Exchange 2010 + dazugehörte Outlook 2010-Clients. Die Nutzer verwenden ihren persönlichen Kalender und haben dazu diverse zusätzliche Raumpostfächer eingebunden. Hierüber sollen Räume gebucht werden können

    Ich habe, um den Ablauf der Erstellung eines Termins zu vereinfachen, eine Terminvorlage erstellt und rufe diese Vorlage mit einem Makro auf:

    Sub Termin()
    Dim obj As Object
      Dim File As String
      File = "\\srv\appbin$\Office\Outlook\Vorlagen\Terminvorlage.oft"
      Set obj = Application.CreateItemFromTemplate(File)
      obj.Display
    End Sub

    So weit funktioniert alles. Ich möchte jetzt jedoch, da der Nutzer mehrere Kalender geöffnet haben kann, dass der Termin, der via Makrovorlage generiert wird, im aktuell ausgewählten und aktiven Kalender gespeichert wird und nicht im persönlichen Kalender.

    Welche Möglichkeiten gibt es hier? Ich habe noch keine Möglichkeit gefunden, den aktiven (ausgewählten) Kalender via VB auszulesen und als Zielobjekt anzugeben.

    Danke für die Hilfe.

    Gruß


    Marco

    Freitag, 5. Juli 2013 22:57

Alle Antworten

  • Vielleicht hilft Dir dieser VBA Code weiter, lass Test mal laufen und schau in das Direktfenster.

    Andreas.

    Option Explicit

    Sub Test()
      Dim myNamespace As Outlook.NameSpace
      Dim myFolder As Outlook.Folder
      Dim All As New Collection
     
      Debug.Print "Jetzt offen:"
      Set myFolder = ActiveExplorer.CurrentFolder
      Debug.Print "  Name    : " & myFolder.Name
      Debug.Print "  Kalender: " & _
        IIf(myFolder.CurrentView.ViewType = olCalendarView, "Ja", "Nein")
     
      Set myNamespace = Application.GetNamespace("MAPI")
      For Each myFolder In myNamespace.Folders
        FindFolders myFolder, olCalendarView, All
      Next
      Debug.Print "Alle Kalender:"
      For Each myFolder In All
        Debug.Print "  Name    : " & myFolder.Name
      Next
    End Sub

    Sub FindFolders(ByVal Parent As Folder, ByVal ViewTyp As OlViewType, _
        ByRef All As Collection)
      Dim ThisFolder As Outlook.Folder
      If Parent.CurrentView.ViewType = olCalendarView Then All.Add Parent
      For Each ThisFolder In Parent.Folders
        If ThisFolder.Folders.Count > 0 Then
          FindFolders ThisFolder, ViewTyp, All
        Else
          If ThisFolder.CurrentView.ViewType = olCalendarView Then
            All.Add ThisFolder
          End If
        End If
      Next
    End Sub

    Sonntag, 7. Juli 2013 04:55
  • Hallo Andreas,

    vielen Dank für den Code. Es wird mir hier jedoch nur die Bezeichnung des Verzeichnisses innerhalb der Mailbox aufgelistet:

    Jetzt offen:
      Name    : Kalender
      Kalender: Ja
    Alle Kalender:
      Name    : Kalender
      Name    : Kalender
      Name    : Kalender
      

    Ich benötige jetzt nur noch die Bezeichnung der Mailbox, die geöffnet ist. Vor dem Start des Scripts habe ich die betroffene Mailbox in der Kalenderansicht aktiviert. Diese erscheint unter "Jetzt offen".

    Über einen weiteren Tipp wäre ich sehr dankbar.

    Gruß


    Marco

    Sonntag, 7. Juli 2013 09:48
  • Naja, jedes Folder Objekt hat eine Parent Eigenschaft, welches den übergeordneten Folder zurück gibt.

    Je nachdem wie tief Dein Folder in dieser Liste steckt musst Du nur weit genug zurückgehen und Du findest Deinen Posteingang.

    Debug einfach mal "Set myFolder = ActiveExplorer.CurrentFolder" im Überwachungsfenster.

    Andreas.

    Montag, 8. Juli 2013 07:15
  •   Set myFolder = ActiveExplorer.CurrentFolder
      Do While Not TypeOf myFolder.Parent Is NameSpace
        Set myFolder = myFolder.Parent
      Loop
      Debug.Print myFolder.Name

    Ich vermute mal das Du diesen Namen brauchst?

    Andreas.

    Montag, 8. Juli 2013 10:16