PDA

Vollständige Version anzeigen : bestimmte Kategorie automatisch als Privat kennzeichnen


Hasso
19.12.2017, 11:44
Moin,

ich habe in Outlook eine Kategorie für private Termine eingerichtet. Jetzt möchte ich gerne, dass diese Termine automatisch als "privat" gekennzeichnet werden, so dass beim Ausdruck der Inhalt des Termins nicht angezeigt wird. Ist das möglich?
Ich vergesse leider immer wieder, die Termine als "privat" zu kennzeichnen.

halweg
21.12.2017, 09:23
Du könntest ein Ereignismakro schreiben, dass neue Termine beim Erstellen (oder auch Ändern) auf die Kategorie "Privat" prüft und dann die Kennzeichnung "Privat" hinzufügt.

Hasso
21.12.2017, 10:32
Hallo halweg,

hast du einen Ansatz, wie so ein Makro aussehen könnte? Mit Outlook-VBA kenne ich mich leider nicht aus.

halweg
21.12.2017, 11:45
Du brauchst ein Ereignismakro.
Also unter "Microsoft Outlook Objekte" so was wie

Private WithEvents Kalendereintraege As Outlook.Items

Sub Application_Startup()
Set Kalendereintraege = Session.GetDefaultFolder(olFolderCalendar).Items
End Sub

Sub Kalendereintraege_ItemAdd(ByVal kalendereintrag As Object)
' Prozedur nach dem Erstellen eines neuen Kalendereintrags
Dim termin As AppointmentItem
If TypeName(kalendereintrag) = "AppointmentItem" Then Set termin = kalendereintrag Else End

If termin.Subject Like "EK*" Then
termin.Categories = "Einkauf": termin.Save
End If

End Subanlegen.
Das ist ein Beispielmakro für andere Zwecke.
Die Einarbeitung in Outlook VBA kann ich dir nicht sparen, da ist die Hilfe ganz nützlich.

Hasso
21.12.2017, 12:27
Hallo halweg,

ich habe jetzt auf der Seite http://www.vboffice.net/de/developers/aktionen-mit-kategorien-ausloesen eine Lösung gefunden:Private WithEvents Explorer As Outlook.Explorer
Private WithEvents Appointment As Outlook.AppointmentItem

Friend Sub Application_Startup()
Set Explorer = Application.ActiveExplorer
End Sub

Private Sub Explorer_SelectionChange()
Dim obj As Object
Dim Sel As Outlook.Selection

Set Appointment = Nothing
Set Sel = Explorer.Selection

If Sel.Count > 0 Then
Set obj = Sel(1)
If TypeOf obj Is Outlook.AppointmentItem Then
Set Appointment = obj
End If
End If
End Sub

Private Sub Appointment_PropertyChange(ByVal Name As String)
Dim i&
Dim Cats As String
Dim arrCats() As String
Dim FindCategory As String
Dim RunRules As Boolean

'Anpassen: Tragen Sie hier den Namen der zu suchenden Kategorie ein
FindCategory = "(Actionlist)"

If Name = "Categories" Then
Cats = LCase$(Appointment.Categories)
If Len(Cats) = 0 Then Exit Sub
FindCategory = LCase$(FindCategory)
Cats = Replace(Cats, ",", ";")
arrCats = Split(Cats, ";")
For i = 0 To UBound(arrCats)
Cats = Trim$(arrCats(i))
If Cats = FindCategory Then
RunRules = True
Exit For
End If
Next
End If

If RunRules Then
Appointment.Sensitivity = olPrivate
Appointment.Save
End If
End Sub

halweg
21.12.2017, 15:35
Schön, dass du eine Lösung gefunden hast, aber was hältst du davon, erst zu suchen und dann hier um Hilfe zu fragen? :(

Die von dir gefundene Lösung ist sehr umständlich, da im Prinzip eine einzige Codezeile reicht:
IF kalendereintrag.Categories like "*Privat*" then kalendereintrag.Sensitivity = olPrivate : Kalendereintrag.save
und die Ereignisse, auf die reagiert wird, dürften auch nicht ganz passen.

Hasso
21.12.2017, 15:49
Hallo Halweg,was hältst du davon, erst zu suchen und dann hier um Hilfe zu fragen?Ich hatte vorher schon gesucht, aber nichts Passendes gefunden.

Dein "Einzeiler" (in Wirklichkeit durch den Doppelpunkt allerdings ein "Zweizeiler"), reagiert aber auf kein Ereignis (Zuweisung der Kategorie). Wie soll ich den Code denn bei mir einbauen?

halweg
21.12.2017, 16:23
Bei deinen Postings steht MOF Meister (nicht "Excel-Meister"), du hast zig Posts, hilfst wahrscheinlich selbst oft (und müsstest wissen, dass es nicht motivierend ist, wenn man für jemanden was zusammenbastelt und der ohne danke den Post ignoriert ...)

Mir fehlt da auch wirklich die Tuchfühlung, weil ich nicht weiß, inwieweit du eine Vorstellung von Ereignismakros hast (die es ja auch in Excel gibt) und herleiten kannst, welches Ereignis für dich anhand deines Nutzungsverhaltens relevant ist... Und ob du die Hilfe dazu kennst, ist ja alles hübsch dokumentiert.
PropertyChange halte ich wie gesagt für wenig geeignet, da du ja vor allem bei neuen Terminen die automatische Kennzeichnung willst.

Hasso
21.12.2017, 16:41
Hallo Halweg,Bei deinen Postings steht MOF Meister (nicht "Excel-Meister")Das habe nicht ich dort eingetragen :D
In der Tat kenne ich mit Excel-VBA gut aus, habe aber von Outlook-VBA nur rudimentäre Kenntnisse.
Wenn ich vergessen habe, dir für deine Unterstützung zu danken, bitte ich dies zu entschuldigen - das ist eigentlich nicht meine Art.

halweg
21.12.2017, 17:22
Das Grundgerüst hast du ja nun, die Änderungszeile von mir auch. Aber welches Ereignis für dich passt, musst du selbst überlegen (oder ausprobieren) ...
Übrigens sind Ereignismakros auch in Excel eine tolle Sache, z. B. um einen Wert, Z. B. eine Zeit, verkürzt eingeben zu können. Hilft bei der Datenerfassung ungemein.