Outlook: Termin vor dem Betreff festlegen

449
Cat Boss
  1. Ich möchte, dass Titel und Thema jedes Termins vor der Uhrzeit stehen.
  2. Ich möchte, dass der Titel automatisch an die Uhrzeit des Ereignisses angepasst wird (wenn ich das Datum ändere, ändert sich auch das Datum des Titels).

Beispiel:

10:00-12:00 Meeting with Joe 
  1. Der Versuch, eine integrierte Methode zu finden, war nicht erfolgreich. Nichts in den Optionen, Einstellungen, Regeln, ich habe die gesamte Benutzeroberfläche ziemlich durchforstet.
  2. Ein Makro ist wahrscheinlich der Weg zu gehen. Mein VB ist nicht vorhanden, obwohl ich keine Angst haben würde zu erfahren, ob jemand einen direkten Link posten würde.
  3. Ich habe durch die Google-Suche kein Termin für das Speichern von Terminen für den Kalender gefunden. Gibt es eines, mit dem ich später ein Makro aktivieren könnte?

Ist das überhaupt möglich?

1
[hier beginnen] (http://www.slipstick.com/developer/copy-new-appointments-to-another-calendar-using-vba/) Raystafarian vor 10 Jahren 1
[und hier] (http://msdn.microsoft.com/de-de/library/aa155701 (v = office.10) .aspx # odc_ch11olevents_topic6) Raystafarian vor 10 Jahren 1

2 Antworten auf die Frage

2
Cat Boss

Der folgende Ausschnitt macht den Job gut, schrieb ihn in etwa 3-4 Stunden und war ziemlich schmerzhaft zu schreiben;)

Alle Kommentare, wie der Code knapper und strukturierter gestaltet werden kann, sind sehr willkommen.

Ich habe Kommentare zu den Teilen hinterlassen, von denen ich dachte, dass sie für zukünftige Besucher etwas unklar sind. Wenn Sie dies lesen und nichts verstehen, hinterlassen Sie einen Kommentar! :)

Dim WithEvents curCal As Items ' set var as the holder of Item events Public lastSavedAppointmentStart As Date ' variable so we won't infinitely loop when saving Items Public lastSavedAppointmentEnd As Date Public justSaved As Boolean  ' Some initial Startup Code from slipstick.com ' F5 while the cursor is in this sub (in the vba editor) ' will reload the so called "project" Private Sub Application_Startup() Dim NS As Outlook.NameSpace Set NS = Application.GetNamespace("MAPI") Set curCal = NS.GetDefaultFolder(olFolderCalendar).Items Set NS = Nothing lastSavedAppointmentStart = Now() lastSavedAppointmentEnd = Now()  End Sub   Private Sub checkPrependtime(ByVal Item As Object) Dim isntLastAppt As Boolean isntLastAppt = isntLastSavedAppointment(Item) If justSaved = False And isntLastAppt Then If Not isTimePrepended(Item) Then Call saveLastAppointment(Item) Call prependTime(Item) Else Call removePrependedTime(Item) End If Else justSaved = False End If End Sub  Function isntLastSavedAppointment(ByVal Item As Outlook.AppointmentItem) As Boolean isntLastSavedAppointment = lastSavedAppointmentStart <> Item.start Or lastSavedAppointmentEnd <> Item.End End Function  Private Sub saveLastAppointment(ByVal Item As Outlook.AppointmentItem) justSaved = True lastSavedAppointmentStart = Item.start lastSavedAppointmentEnd = Item.End End Sub  Private Sub removePrependedTime(ByVal Item As Outlook.AppointmentItem) Set lastSavedAppointment = Nothing Dim oldSubject As String ' Cut out the time part of the subject (e.g. 13:00-15:00 Meeting with Joe) ' returns Meeting with Joe oldSubject = Mid(Item.Subject, 13, Len(Item.Subject)) Item.Subject = oldSubject Item.Save End Sub  Private Sub prependTime(ByVal appt As Outlook.AppointmentItem) Dim newSubject As String, apptStart As Date, apptEnd As Date Set lastSavedAppointment = appt newSubject = Format(appt.start, "hh:mm") & "-" & Format(appt.End, "hh:mm") & " " & appt.Subject appt.Subject = newSubject appt.Save End Sub  ' Check whether the third char is : ' If time is prepended (e.g. Item.subject is something like ' "12:00-13:00 Meeting with joe" Then third char is always :) Function isTimePrepended(ByVal Item As Outlook.AppointmentItem) As Boolean isTimePrepended = InStr(3, Item.Subject, ":") End Function   ' BEGIN event handlers Private Sub curCal_ItemAdd(ByVal Item As Object) If TypeOf Item Is Outlook.AppointmentItem Then Call prependTime(Item) End If End Sub  Private Sub curCal_ItemChange(ByVal Item As Object) If TypeOf Item Is Outlook.AppointmentItem Then Call checkPrependtime(Item) End If End Sub  ' END event handlers 
0
beeks

Es ist möglich, zumindest in OWA und Outlook 2013, möglicherweise auch in Outlook 2010. Wir haben vor kurzem mit dem Entwickeln von Outlook-Apps im Büro angefangen, daher kann ich leider keinen Code für den Einstieg angeben.

Lesen Sie dies wie folgt: http://msdn.microsoft.com/en-us/library/dn574747%28v=office.15%29