Outlook 2019 VBA Terminfarbe ändern
Moin allerseits,
bisher konnte ich per Makro die Farben für bestimmte Termine (Stichwort im Betreff, bestimmter Monat) ändern. Nach der Umstellung von POP auf IMAP, ist diese Option aber aus meinem Kalnder verschwunden. Noch nicht mal manuell kann man noch Farben setzen. Jetzt also mein Versuch über die Kategorienfarbe. Die Property Categories.Color habe ich gefunden. Allerdings schaffe ich es nicht, das entsprechende Objekt zu definieren.
Weiß jemand Rat, durch was ich die ???? eretzen muss, damit funktioniert?
Lieben Dank und schönen Abend!
Spinnifex
bisher konnte ich per Makro die Farben für bestimmte Termine (Stichwort im Betreff, bestimmter Monat) ändern. Nach der Umstellung von POP auf IMAP, ist diese Option aber aus meinem Kalnder verschwunden. Noch nicht mal manuell kann man noch Farben setzen. Jetzt also mein Versuch über die Kategorienfarbe. Die Property Categories.Color habe ich gefunden. Allerdings schaffe ich es nicht, das entsprechende Objekt zu definieren.
Dim oCal As Outlook.Folder
Dim oItems As Outlook.Items
Dim oAppt As Outlook.AppointmentItem
Dim oCat As Outlook.Category
Set oCal = Application.Session.GetDefaultFolder(olFolderCalendar)
Set oItems = oCal.Items
Set oCat = oCal.????
Weiß jemand Rat, durch was ich die ???? eretzen muss, damit
????.Color = olCategoryColorDarkorange
Lieben Dank und schönen Abend!
Spinnifex
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1822942664
Url: https://administrator.de/contentid/1822942664
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
13 Kommentare
Neuester Kommentar
Servus.
den einzelnen Terminen werden keine Farben zugewiesen sondern Kategorie-Namen und dass macht man in der Categories Property des Appointment Objekts
https://docs.microsoft.com/de-de/office/vba/api/outlook.appointmentitem. ...
Diese kann einen oder mehrere Kategorienamen mit Komma voneinander getrennt enthalten.
Beispiel (Filter nach Subject & Co kannst du ja wieder selbst hinzufügen)
Die Farben für die Kategorien-Namen legt man vorher schon fest, entweder manuell über den entsprechenden Dialog, oder per Code
Grüße Uwe
den einzelnen Terminen werden keine Farben zugewiesen sondern Kategorie-Namen und dass macht man in der Categories Property des Appointment Objekts
https://docs.microsoft.com/de-de/office/vba/api/outlook.appointmentitem. ...
Diese kann einen oder mehrere Kategorienamen mit Komma voneinander getrennt enthalten.
Beispiel (Filter nach Subject & Co kannst du ja wieder selbst hinzufügen)
Sub AssignCategories()
Dim app As Object
For Each app In Application.Session.GetDefaultFolder(olFolderCalendar).items
SetCategory app, "Wichtig"
Next
End Sub
' Prozedur um die Kategorien eines Termins zu ändern
Sub SetCategory(itm As Object, cat As String)
If TypeOf itm Is AppointmentItem Then
If itm.IsRecurring Then
If itm.RecurrenceState <> olApptMaster Then
Set itm = itm.Parent
End If
End If
End If
itm.Categories = cat
itm.Save
End Sub
Die Farben für die Kategorien-Namen legt man vorher schon fest, entweder manuell über den entsprechenden Dialog, oder per Code
Application.Session.Categories.Item("Wichtig").Color = olCategoryColorBlue
Grüße Uwe
Zitat von @spinnifex:
Nur sieht man die Färbung nirgends. Egal ob ich manuell oder per VBA Frei, Gebuchtoder Außer Haus auswähle, die Einträge bleiben Standard-Blassblau. Muss ich an den Ansichten noch etwas ändern?
Kommt auf die Ansicht drauf an, wenn Monatsansicht sollten sich die Einträge entsprechend Farben, wenn Listenansicht dann muss natürlich die entsprechende Spalte eingeblendet werden.Nur sieht man die Färbung nirgends. Egal ob ich manuell oder per VBA Frei, Gebuchtoder Außer Haus auswähle, die Einträge bleiben Standard-Blassblau. Muss ich an den Ansichten noch etwas ändern?
Grüße Spinnifex
[edit] btw: Wo muss denn die Zeile
Application.Session.Categories.Item("Gebucht").Color = olCategoryColorBlue
Welche Office/Outlook Version?
Hier mal als Beipspiel einem markierten Termin die Kategorie mit dem Namen "Gelbe Kategorie" zugewiesen, er erscheint dann wie gewünscht mit der zugewiesenen Farbe.
und mit dem kurzen Test-Schnippsel die Kategorie geändert (natürlich musst du für Serientermine obige Code-Variante nehmen da sich bei Serienterminen nur der Haupttermin ändern lässt)
Works as designed wie man so schön sagt
Denke du hast da nur ein Verständnisproblem was IMAP und Outlook betrifft.
das Direktfester kläfft mich mit "Laufzeitfehler 91 Objektvariable oder With-Blockvariable nicht festgelegt" an.
Klappt hier bei einem kurzen Cross-Test von Outlook 2010 bis 2021 einwandfrei. Du gibst wohl den faschen Kategorienamen an.Hier mal als Beipspiel einem markierten Termin die Kategorie mit dem Namen "Gelbe Kategorie" zugewiesen, er erscheint dann wie gewünscht mit der zugewiesenen Farbe.
und mit dem kurzen Test-Schnippsel die Kategorie geändert (natürlich musst du für Serientermine obige Code-Variante nehmen da sich bei Serienterminen nur der Haupttermin ändern lässt)
Sub Test()
Dim app As AppointmentItem
For Each app In ActiveExplorer.Selection
app.Categories = "Gelbe Kategorie"
app.Save
Next
End Sub
Works as designed wie man so schön sagt
Kannst Du zufällig erklären, warum das in der .PST so problemlos lief und in .OST jetzt so'n Ärger macht? Irgendwie habe ich das Gefühl seit IMAP vor einem ziemlich zusammengestutzen Outlook zu sitzen.
Das hat mit OST nichts zu tun. Bei IMAP liegen Kalender weiterhin im lokalen Store des Outlook und nicht auf dem IMAP-Server. Bei IMAP liegen rein Mails auf dem IMAP-Server, weder Kalender noch Kontakte, diese liegen weiterhin nur im lokalen Store.Denke du hast da nur ein Verständnisproblem was IMAP und Outlook betrifft.
Zitat von @spinnifex:
"falscher Kategorienamen" Dann ist Copy and Paste schuld ... Ich habe Deine Zeile 1:1 übernommen.
Näääääääää 🙈"falscher Kategorienamen" Dann ist Copy and Paste schuld ... Ich habe Deine Zeile 1:1 übernommen.
Es geht mir übrigens nicht nur um Serientermine, ich möchte jede Art Termin kennzeichnen.
Kein Problem die obige SetCategories Methode kann das.
Uupss sorry.
Du kannst die Kategorien im Dialog auch benennen wie du willst oder auch neue hinzufügen.
Im Skript musst du dann selbstredend den neuen Namen bei der Zuweisung zu Terminen oder Ändern der Farbe verwenden.
Immerhin - Dein Snippet "Gelbe Kategorie" funktioniert nd auch wenn ich nicht erst Termine selektieren will, hilft es vermutlich zur Lösung.
Du kannst die Kategorien im Dialog auch benennen wie du willst oder auch neue hinzufügen.
Im Skript musst du dann selbstredend den neuen Namen bei der Zuweisung zu Terminen oder Ändern der Farbe verwenden.
Zitat von @spinnifex:
Moin,
und so geht's tatsächlich auch noch ohne VBA: Auch wenn Mails und Kalendereinträge keine Kategorien mehr zu kennen scheinen, in den Aufgaben gibt es sie noch. Dort lässt sich auch noch der Dialog öffnen um die Kategorien anzupassen. Muss man aber nicht erklären, ist schließlich erklärend beschriftet.
Mit einem Shortkey hat man seine Kategorien dann auch in Post und Terminen wieder zur Verfügung.
Moin,
und so geht's tatsächlich auch noch ohne VBA: Auch wenn Mails und Kalendereinträge keine Kategorien mehr zu kennen scheinen, in den Aufgaben gibt es sie noch. Dort lässt sich auch noch der Dialog öffnen um die Kategorien anzupassen. Muss man aber nicht erklären, ist schließlich erklärend beschriftet.
Mit einem Shortkey hat man seine Kategorien dann auch in Post und Terminen wieder zur Verfügung.
Na wenn es weiter nichts ist und du nur den Dialog für die Zuweisung bekommen willst das kannst du dir auch mit einem eigenen Button in der Menüleiste der Mail-Inspector-Fenster hinzufügen. Der Thread war je eigentlich hauptsächlich auf VBA bezogen.
Sub OpenCategoriesDialog()
If Not ActiveInspector Is Nothing Then
With ActiveInspector
If Not .CurrentItem Is Nothing Then
.CurrentItem.ShowCategoriesDialog
End If
End With
Else
With ActiveExplorer.Selection
If .Count > 0 Then
.Item(1).ShowCategoriesDialog
End If
End With
End If
End Sub