Outlook Calendar Vacation

Urlaubszeit ‒ schnell viele Termine in Outlook absagen

Es ist Urlaubszeit. Sie haben einige freie Tage vor sich, und wollen deshalb im Kalender von Outlook die von Ihnen angesetzten oder akzeptierten Besprechungen absagen.

Das dauert, selbst wenn Sie flink an der Tastatur sind, weil Sie für jeden Termin ein paar mal klicken und die Absagenachricht eintragen müssen. Die Abhilfe schafft ein VBA-Skript, das diese lästige Aufgabe übernimmt.

Da für einen Urlaub pro Woche ganz gern mal ein, zwei dutzend Termine und mehr anfallen, spart mir dieses Skript seit langem viel Zeit und Mühen und Fehler.

Dieser Artikel ist auch auf Englisch verfügbar: Vacation Time ‒ Quickly Delete Multiple Appointments in Outlook. Das Skript ist sprachunabhängig, wenngleich die Meldungen alle auf Englisch programmiert sind.

Schritte, Outlook-Termine abzusagen

Wollen Sie mehrere Termine in Outlook absagen, führen Sie üblicherweise die folgenden Schritte händisch für jeden Termin durch:

  1. Sie markieren im Kalender alle Termine, die Sie absagen möchten, egal ob Sie derjenige sind, der eingeladen hat, oder ob Sie ein Teilnehmer daran sind.
  2. Dann löschen Sie mit der Entfernen-Taste, woraufhin ein Fenstergewitter ausbricht.
  3. Für alle Termine fragt Outlook, ob Sie nur diesen Termin oder die ganze Serie absagen wollen.
  4. Für alle eigenen Termine öffnet Outlook daraufhin den Kalendereintrag. Hier tragen Sie die Nachricht zur Absage ein und drücken dann auf „Senden“. Für jeden Termin mindestens drei Klicks und vier Tastenanschläge. Wenn Sie gut sind.
  5. Für alle angenommenen Termine fragt Outlook, ob Sie mit Nachricht absagen wollen. Wenn Sie nett zu Ihren Kollegen sind, tun Sie dies, und befüllen das neue Nachrichtenfenster.

Für jeden Termin macht das mindestens vier Klicks und vier Tastenanschläge. Wenn Sie geübt sind. Mal zwanzig Termine sind Sie da schon einige Zeit beschäftigt, und das vermutlich an ihrem letzten Arbeitstag vor dem Urlaub, wo sich sowieso schon mehr Arbeit anhäuft, weil so noch vieles vor Ihrer Abwesenheit erledigten wollen. Selbiges gilt freilich auch vor Dienstreisen; jegliche Abwesenheit zieht nicht nur die Administration derselbigen, sondern auch die Umorganisation der Arbeit mit sich, und aufgrund der „normalen“ Arbeit, die ja nicht einfach verschwindet, auch den Wunsch oder die Notwendigkeit, vieles halt eben noch zu erledigen. Genau aus dieser Erfahrung heraus entstand mein Wunsch, das ganze nicht mehr manuell machen zu müssen, egal ob Urlaub oder Dienstreise, und egal ob ich die Termine erst am letzten Tag vor der Abwesenheit absage, oder schon einige Tage früher, wie sich das eigentlich gehört.

Einfacher per Automatisierung

Das ganze lässt sich zumindest auf der Terminseite auch einfacher erledigen, indem Sie die Fähigkeit des Computers nutzen, Dinge eben automatisch zu erledigen.

Meist wollen Sie allen dieselbe Nachricht schicken und nur den jeweiligen Termin absagen, nicht jedoch die Terminserie.

Das heißt Sie entscheiden gar nicht für jeden Termin neu, und formulieren auch nicht neu, müssen aber trotzdem immer neu Klicken und kopieren und einfügen.

Dafür hat uns die Informatik Skriptsprachen gegeben. Und im konkreten Fall heißt mein Visual Basic-Skript BulkDeleteAppointments.bas. Das übernimmt genau diese Aufgaben für Sie.

  • Sie wählen in Outlook entweder einen Datumsbereich in der Kalenderansicht aus oder mehrere Termine.
  • Sie haben im fraglichen Zeitraum lauter interne Termine, die alle dieselbe Nachricht bekommen sollen? Dann wählen Sie einen Datumsbereich aus.
  • Sie möchten mehrere Termine mit derselben Absage versehen, aber andere stehen lassen? Dann wählen Sie mit der Strg- oder Umschalten-Taste mehrere Termine aus.
  • Mit Alt-F8 öffnen Sie das Makro-Fenster und wählen das Makro BulkDeleteAppointments. Dieses fragt Sie nach einer einzeiligen Nachricht, die verschickt werden soll, bevor es dann die Absagen erstellt und die Termine löscht. Fertig.

Vorsicht und Umsicht ist geboten, denn das Skript fragt nicht nochmal nach.

Wenn Sie dem Skript oder mir noch nicht ganz trauen, dann versetzen Sie Outlook einfach vorher in den Offline-Modus und führen BulkDeleteAppointments dann aus. Manchmal bringt das Skript einen Fehler, der auf noch unberücksichtigte Eigenschaften mancher Termine zurückgeht. Dank mehrere Aktualisierungen in den letzten Jahren dürften dies nicht mehr viele sein, jedoch kann ich nicht ausschließen, dass es dennoch auftritt. In diesem Fall markieren Sie bitte die verbleibenden Termine und führen das Skript nochmal aus.

Auch klar ist: Bevor ich das Skript auf alle möglichen Termine laufen lasse, überlege ich, welche Termine eine Sonderbehandlung, also einen extra Absagetext benötigen, und sage diese manuell wie bisher auch ab. Oder aber ich lasse das Skript mehrfach laufen und schreibe jeweils einen anderen Absagetext in die Dialogbox zur Abfrage hinein. Denn eine Automatisierung soll ja das Arbeitsleben professioneller machen, nicht schludriger!

Einrichten

Damit Sie das Skript nutzen können, müssen Sie es in Ihr Outlook integrieren. Dazu importieren Sie es zunächst in den Makro-Editor und signieren es dann digital, damit Outlook sich sicher genug fühlt. Sollten Sie schon bei Durchsicht der folgenden Aufzählung nur Bahnhof verstehen, dann könnte es sein, dass ein Skript in Outlook noch nichts für Sie ist. Das ist dann auch gar nicht schlimm, doch ist jegliche Skriptlösung eher für technikaffine Menschen geeignet, die nicht bei jedem Schritt Sorge haben, etwas kaputt zu machen.

  1. Gehen Sie zu BulkDeleteAppointments.bas und laden dort die Datei in der Raw-Ansicht herunter.
  2. Öffnen Sie in Ihrem Outlook den Makro-Editor mit Alt-F11.
  3. Wählen Sie im Menü Datei den Eintrag „Datei importieren“.
  4. Wählen Sie das heruntergeladene Skript BulkDeleteAppointments.bas.
  5. Erstellen Sie eine Signatur, in dem Sie C:\Program Files\Microsoft Office\root\Office16\selfcert.EXE aufrufen. Statt Office16 kann das Verzeichnis bei Ihnen auch anders heißen. Geben Sie dem Zertifikat einen Namen und bestätigen Sie.
  6. Signieren Sie im Makroeditor, indem Sie im Menü Tools/Werkzeuge den Eintrag Digitale Signatur klicken und dort Ihr neu erstelltes Zertifikat suchen.
MS Office Selfcert
MS Office Selfcert Screenshot

Fertig.

Das Skript können Sie auch auf Github einsehen und selbst anpassen, dazu gibt’s weiter unten in diesem Artikel noch Anmerkungen.

Fehler und deren Behebung

Zwei übliche Fehlermeldungen möchte ich Ihnen nicht vorenthalten:

  • Fehlermeldung „Statement too complex“/ „Anweisung zu komplex“: Sie haben nicht die Quellcode-Datei heruntergeladen, sondern die ganze Webseite gespeichert. Gehe exakt so vor wie im Abschnitt „Einrichten“ beschrieben.
  • Fehlermeldung „Die Makros in diesem Projekt sind deaktiviert. Informationen zum Aktivieren der Makros finden Sie in der Online Hilfe oder der Dokumentation der Host-Anwendung.“: Genau dies. Speichern kann schon helfen, und nochmal genau die Anleitung oben befolgen.

Wenn Sie mit einer anderen Fehlermeldung konfrontiert sind, lesen und befolgen Sie nochmal genau die Anleitung zum Einrichten von oben. Wenn’s dann immer noch nicht geht, befragen Sie eine Suchmaschine Ihrer Wahl mit der genauen Fehlermeldung.

Genereller Hinweis zu VBA-Skripten

Wieso biete ich das nicht als fertiges Plugin für Outlook an? Weil ich dazu deutlich mehr Test- und Verifikationsaufwand treiben müsste, und permanent Signaturen und Integration mit allen möglichen Outlook-Versionen pflegen müsste. Einfacher für mich ist es so.

Das heißt aber auch: Sie laden hier ein VisualBasic-Skript aus dem Internet herunter und fügen es Ihrem Outlook hinzu, und geben ihm damit Zugriff auf ihren gesamten Kalender. Das kann je nach IT-Umgebung erlaubt sein oder auch nicht, es kann nicht wirklich gewünscht sein oder tatsächlich verboten, egal ob durch Maßnahmen unterbunden oder nur durch irgendeine IT-Richtlinie. Wenn Sie es ganz genau wissen wollen, dann schauen Sie zuerst bei sich intern nach im Intranet nach. Eventuell findet Ihre IT-Abteilung das Urlaubs-Skript ja so nützlich, dass sie es zentral übernehmen und einbinden, dann haben Sie lokal gar nichts mit der Installation zu tun.

Und dann bleibt immer noch das Restrisiko, dass die Funktion bei Ihnen nicht so tut, wie sie soll. Klar habe ich getestet, seit Jahren, doch immer nur auf der Version von Outlook, die ich eben gerade im Einsatz habe. Seit einiger Zeit bin ich beruflich auf Microsoft 365 und habe daher stets die neueste Version von Outlook, jedoch natürlich in genau der Implementierung in der Firmenumgebung, in der das bei uns eben läuft. Ob im Einzelfall die Eigenschaften der Umgebung so anders sein können, dass das Skript bei Ihnen nicht läuft, kann ich von hier aus nicht genau einschätzen. Die einzelnen Schritte der Funktion sind relativ einfach, Sie werden keine komplexen Programmierschnittstellen vorfinden, die bedient werden, keine besonderen Voraussetzungen, keine komplizierten Algorithmen, das Vorgehen ist ziemlich schlicht und geradeaus. Wenn Sie also schonmal eine Programmiersprache benutzt haben oder zumindest keine Berührungsängste damit haben, dann werden Sie problemlos verstehen können, was in dem Code an welcher Stelle vor sich geht.

Ich verwende diese Programmiersprache, Automatisierung und Outlook nun schon seit mehreren Jahrzehnten, und doch ist dieses Skript genau das: ein Skript. Etwas, das ich für mich selbst geschrieben habe, und das ich Ihnen zur Verfügung stellen möchte, damit auch Sie davon profitieren können.

Sollte an irgendeiner Stelle mal etwas nicht so klappen wie gedacht, können Sie dies beheben oder verbessern, so wie es schon manche Anwender dieses Skripts getan haben. Nutzen Sie dafür die entsprechende Funktion von Github, also Herunterladen des Quellcodes mit Git, Arbeit am Programmcode, und dann erstellen Sie einen sogenannten Pull Request, also direkt via Github einen Vorschlag, den ich dann bekomme und nach Prüfung in den Hauptzweig des Programms übernehmen kann. Das funktioniert tadellos und beißt nicht, Sie brauchen nur einen Github-Account dafür, und idealerweise einen Git Client.

Und was automatisieren Sie?

Was automatisieren Sie sonst noch in Outlook?

Wenn Ihnen das Skript hilft, oder Sie weitere konkrete Ideen haben, dann kommentieren Sie und tragen Sie sich unten für den Newsletter ein. Auf diese Weise verpassen Sie nicht, wenn es was neues dazu gibt.

Photo: Joachim Schlosser, License Creative Commons Attribution Share-Alike

Teilen & Verweilen

Kommentare

46 Antworten zu „Urlaubszeit ‒ schnell viele Termine in Outlook absagen“

  1. Ganz lieben Dank für das tolle Macro!
    Hat mir sehr geholfen

    Jochen

  2. Avatar von Sebastian
    Sebastian

    Kann man das script auch per Mail aktivieren?
    Ich sende von meiner privaten Mail einen Zahlencode an meine Firmenadresse der das VBA für heute aktiviert. Hintergrund: Termine absagen bei ungeplanter Abwesenheit wie Krankheit.

    1. Das Skript läuft ja auf der lokalen Outlook-Instanz auf dem Desktop-Rechner, und zumindest ich lasse den Computer nicht an, wenn ich das Büro verlasse. Da hülfe also auch eine Fernsteuerung nichts, und ich wäre eher vorsichtig, VBA basierend auf E-Mail-Triggern laufen zu lassen. Spätestens dann kommt nämlich noch der Wunsch, die Nachricht auch als Text mit der E-Mail mitzuschicken, und schon muss man gucken, wie man das sicher kriegt. Ich rate von diesem Anwendungsfall eher ab.

  3. Avatar von Georg Mölbitz
    Georg Mölbitz

    Ich kriege beim Aufruf des Makros die Meldung:
    „Die Makros in diesem Projekt sind deaktiviert. Informationen zum Aktivieren der Makros finden Sie in der Online Hilfe oder der Dokumentation der Host-Anwendung.“
    Wie kann ich das lösen? Nächste Woche steht Urlaub an :)

    1. Das hängt von der eigenen Installation ab. Bitte mit genau der Fehlermeldung in der Online-Hilfe suchen.

    2. Avatar von Georg Mölbitz
      Georg Mölbitz

      Bin zu blind, speichern des Makros hat es gebracht.
      Alle Termine für nächste Woche waren schwuppdiwupp abgesagt.

  4. Ich habe mit VBA bisher nur ein wenig gearbeitet. Ich scheitere bereits daran, dass Script runter zu laden… Ich finde keinen Download Button o. ä.
    Ich habe mir extra GitHub installiert, half mir auch nicht.
    Den Raw Content in eine Textdatei zu kopieren und diese umzubenennen in „BulkDeleteAppointments.bas“ mit entsprechender Dateiendung hat auch nicht geklappt…

    Kann man mir helfen? :)

    1. Das mag ein leider Zeichen des Himmels sein, dass es diesmal nicht sein soll. Am besten nochmal ganz langsam und von vorne die Punkte durchgehen.

    2. Avatar von Volker

      Hey Morris,

      ich habe auch ein Weilchen gesucht – obwohl ich das Tool schon ein Weile nutze und es wiiiiirklich genial finde, Danke an dieser Stelle nochmal an Joachim.
      Den Download habe ich gefunden unter: https://github.com/drjs/OutlookHelpers und dann bei „Code“ auf Download ZIP. Danach kannst du nach der Anleitung fortfahren. Bei mir braucht es hin und wieder eine Freigabe der Makros. Ansonsten funktioniert es tadellos!

      Herzliche Grüße
      Volker

  5. Avatar von Georg Mölbitz
    Georg Mölbitz

    Hallo,
    ich würde das Makro geren wieder auf meien neuen Arbeitsrechner aktivieren (Office 365 64 bit), aber es kommt beim Import die Meldung „Anweisung zu komplex“.

    Gibt es schon einen Workaround?

    Danke und Gruß

    1. Bitte zunächst auf den Link klicken, dann dort die Datei herunterladen.

    2. Hallo,

      nach kurzer google Suche bin ich auf dieses großartige Makro gestoßne! Leider ist bei mir das gleiche Problem. Ich habe die .bas heruntergeladen und versuche diese im Makroeditor als Datei zu importieren. Es erscheint die Meldung „Statement too complex“.

      Übersehe ich etwas?

      Danke für einen Hinweis,
      Tom

    3. Den Fehler habe ich bei mir noch nicht gesehen, von daher kann ich nur Vermutungen anstellen. Eventuell packt er nur eine maximale Anzahl an Terminen (die im Code schon auf 100 begrenzt sind), oder die Nachricht ist zu lang. Bei welcher Zeile meckert er denn?

    4. Hi, irgendwie wird meine vorherige Antwort hier nicht angezeigt. „Statement too complex“ kommt beim import der .bas. Danach wird kein Makro importiert. Das heißt, „er meckert“ bei keiner Zeile, da das Makro gar nicht ausgeführt werden kann und auch keine Termine ausgewählt wurden.

      VG

    5. Ah. Du hast nicht die Quellcode-Datei heruntergeladen, sondern die ganze Webseite gespeichert. Gehe exakt so vor wie im Abschnitt „Einrichten“ beschrieben.

    6. „BulkDeleteAppointments.bas“ habe ich heruntergeladen und gespeichert. So wie unter einrichten beschrieben.
      VG

  6. Avatar von Florian Schmidt
    Florian Schmidt

    Top Script! Vielen Dank, Joachim!

    Ich habe die selfcert.exe erst nicht gefunden, aber die Seite hier hat geholfen:
    https://www.howto-outlook.com/howto/selfcert.htm

    1. Sehr gut, danke für den Link!

  7. Avatar von Phillip

    Daran kann es durchaus liegen.

    Habe Office professional plus 2016 :-)

    Aus dem Text konnte ich nicht entnehmen, dass es nur für alte Versionen funktioniert.

    1. Bei mir läuft die neueste Office365-Version, und auf Office 2016 hatte ich es verwendet. Vielleicht irgendwelche Einstellungen der Organisation, die Makros verhindern?

  8. Avatar von Phillip

    Hallo in die Runde,

    nach so einem Makro habe ich grade gesucht, als es darum ging, Termine für die Ferien abzusagen.

    Allerdings wirft er bei mir nach dem Ausführen mit ALT & F8 folgenden Fehler raus:

    „Fehler beim kompilieren, Syntaxfehler“

    Markiert durch den Debugger ist dann folgende Zeile „Sub DeleteItemWithDefaultMessage(oItem, cancelMsg)“

    Vl kann mir ja Jemand helfen :-)

    1. Welche Version von Outlook/Office (Datei->Office Account->About Outlook)? Hier läuft die Version 2008.

  9. Avatar von Dr. Volker Recknagel
    Dr. Volker Recknagel

    Das hilft mir sooooo toll – herzlichen DANK!

    Sehen Sie vielleicht auch den umgekehrten Weg? Ich möchte gern allen markierten Terminen/Einladungen ZUsagen.
    Das wäre so toll.

    1. Wenn Sie sich an VBA herantrauen, lässt sich das bestimmt machen – es ist ja dieselbe Struktur.

  10. Hilft immer noch :-) Danke!

  11. Avatar von Dimitree

    Guten Tag
    Besten Dank für das Skript und die sehr gute Anleitung!
    Frage: Ist es möglich, die Termine auch ohne Antwortmail abzusagen? Also so wie auch via GUI die Option „Keine Antwort senden“.

    LG
    Dimitree

    1. Gerne! Ja, das geht freilich auch ohne Antwortmail, habe ich aber nicht implementiert. Da müssten Sie an den VBS-Code ran.

  12. Vor so langer Zeit geschrieben, aber es hilft noch immer :-) Vielen Dank!!

  13. Avatar von Rudolf Stieben
    Rudolf Stieben

    Guten Morgen Herr Dr. Schlosser,

    vielen Dank für dieses Makro. Es hat mir sehr geholfen und enorm viel Zeit gespart.

    Viele Grüße,
    Rudolf Stieben

  14. Avatar von Ricarda Schindler
    Ricarda Schindler

    Guten Tag Herr Dr. Schlosser,
    ich hatte vor ein paar Tagen die gleiche Idee und siehe da es gibt diese Möglichkeit schon.
    Als Add-In wäre es natürlich toll.
    Ich probiere es auf jeden Fall mal zu (wenn unsere Unternehmenssicherheitshürden es zu lassen :)).
    Herzlichen Dank für Ihre Arbeit.
    Beste Grüße
    Ricarda Schindler

    1. Gerne, freut mich, wenn’s hilft.

  15. Avatar von Benjamin

    Hallo Herr Schlosser,

    sehr gutes Markos. Ich bin auf der Suche nach etwas ähnlichem, welches nicht absagt, sondern mit dem ich mehrere Termine zusagen kann, ohne jeden einzeln auszuwählen.
    Gibt es so etwas?

    1. Hmm, jedenfalls nicht von mir…

  16. Avatar von Klaus

    Hallo,
    tolles Makro, hat mir sehr geholfen, vielen Dank!

    Was bei mir nicht gleich funktioniert hat: Outlook.Session.CurrentUser enthält auch meine Abteilungsbezeichnung in Klammern, während oAppointItem.Organizer nur den Namen enthält. Ich habe den Vergleich auf „InStr(1, Outlook.Session.CurrentUser, oAppointItem.Organizer) = 1“ geändert. Das ist aber wohl sehr spezifisch.

    Was generell nicht geht, ist das Löschen von Terminen, wo niemand eingeladen ist, die also nur für mich sind. Das habe ich so gelöst:

    If InStr(1, Outlook.Session.CurrentUser, oAppointItem.Organizer) = 1 Then ‚ If this is my own meeting
    If (oAppointItem.Recipients.Count) <= 1 Then ' Nobody invited
    'MsgBox ("Own Appointment, nobody invited: " + oAppointItem.Subject)
    oAppointItem.Delete
    Else
    'MsgBox ("Own Appointment: " + oAppointItem.Subject)
    oAppointItem.MeetingStatus = olMeetingCanceled
    oAppointItem.Body = cancelMsg
    oAppointItem.Save
    oAppointItem.Send
    End If

    Vielleicht willst Du das ja übernehmen.

    Danke nochmal,
    Klaus

    1. Danke, Klaus, der Knaller! Das seh ich mir an.

    2. Hi,
      das Problem habe ich auch, auch wenn der Post schon paar Jahre alt ist ;)
      Wo muss ich den Code einfügen, damit das geht?

      Danke,
      Daniel

    3. Du kannst jetzt den aktualisierten kompletten Code aus GitHub nehmen.

    4. Hi,
      ich habe meinen aktuellen Stand (ist besser als mein Post oben) hier https://github.com/klausj1/OutlookHelpers/blob/master/BulkDeleteAppointments.bas veröffentlicht, und im Original-Repository einen Pull-Request erstellt.

      @Daniel, kannst Du gerne verwenden, Feedback welcome!

    5. Vielen herzlichen Dank für deine umfangreichen Verbesserungen, Klaus! Diese sind jetzt in den Hauptzweig übernommen für alle, inklusive erweiterter Credits.

  17. Avatar von Marian Kelc
    Marian Kelc

    Hallo Herr Schlosser!

    Vielen herzlichen Dank für das Zurverfügungstellen dieses einfachen und effektiven Makros.
    Konnte gerade haufenweise Arbeit sparen :-)

    Nette Grüße,

    Marian Kelc

  18. Avatar von andreas
    andreas

    Hallo
    bei mir bricht das Makro ab in der
    The core function for bulk delete bei
    myMtg.Body = cancelMsg

    office 2013

    1. Hatte ich auch schon ein paar Male, konnte bislang jedoch noch nicht rausfinden, bei welcher Konstellation das auftritt, deswegen habe ich keine Fehlerbehandlung außenrum gebaut. Es macht auf jeden Fall keinen Unsinn, sondern bricht lediglich ab.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert


Kostenloses eBook

Das eBook »E-Mail effizient einsetzen« zeigt Ihnen, wie Sie E-Mail besser nutzen. Mehr Info…

Über 1900 E-Mail-Abonnenten!


Beliebteste Beiträge