Office: Vorgefertigte Terminblöcke

Helfe beim Thema Vorgefertigte Terminblöcke in Microsoft Outlook Hilfe um das Problem gemeinsam zu lösen; Hallo, ich möchte gern den Dienstplan meiner Frau in meinem Outlook eintragen, da sie aber ca 10 Verschiedene Dienste hat war meine Überlegung, diese... Dieses Thema im Forum "Microsoft Outlook Hilfe" wurde erstellt von Coryfin, 23. Dezember 2024.

  1. Coryfin Neuer User

    Vorgefertigte Terminblöcke


    Hallo,
    ich möchte gern den Dienstplan meiner Frau in meinem Outlook eintragen, da sie aber ca 10 Verschiedene Dienste hat war meine Überlegung, diese so zu erstellen das ich nur bei dem entsprechenden Tag einen vorgefertigten Block anklicken muss wo dann die Zeit hinterlegt ist. Ich habe keine Ahnung ob sowas überhaupt möglich ist. Die Dienste haben Bezeichnungen wie z.B. "BD6" und eine Zeit von 16:00- 21:00 dahinter.

    Vielen Dank
     
  2. d'r Bastler
    d'r Bastler Erfahrener User
    Moin Cory,

    ob sich das in Outlook lösen lässt, weiß ich nicht. Mein (Um)Weg ginge über XL: Die Schichtliste einlesen und mit VBA in den Kalender schreiben. Da müsstest Du noch nicht mal was klicken.

    Lass mal eine Deiner Listen sehen und ich schau, was ich für Dich tun kann.

    Grüße
     
    d'r Bastler, 3. Januar 2025
    #2
  3. Coryfin Neuer User
    Hallo,
    vielen Dank für deine Antwort. Ich habe mal ein Muster von dem Plan im Anhang mit der entsprechenden Legende.

    Danke für deine Bemühungen
    Grüße
     
    Coryfin, 7. Januar 2025
    #3
  4. d'r Bastler
    d'r Bastler Erfahrener User

    Vorgefertigte Terminblöcke

    Moin Cory,
    na, zum Glück sind meine Monitore große genug! Deine Mini-Hieroglyphen zu entziffern, war nicht einfach Vorgefertigte Terminblöcke *;)*

    Und es brauchte eine Neusortierung Deiner Dienste (nach Anfangszeiten), um zu verstehen, dass die 3-letter-codes keine Mitarbeiternamen sind, sondern Dienstbezeichnungen. Aber es geht ja auch um Deine eine Frau.

    Wenn ich das jetzt richtig sehe, verstehst Du unter Terminblock die Abfolge von Diensten in einem bestimmten Zeitraum. Aus Deiner Tabelle da eine Regelmäßigkeit zu erkennen, ist mir nicht gelungen. Und das obwohl ich das Thema aus Ferienjob-Zeiten durch aus kenne: Da gab aus 132 möglichen Schichten die Auswahl kleine und große Tour. Und die zuständige Sachbearbeiterin kämpfte jeweils locker einen Monat, das jedes Jahr wieder für eine wechselnde Anzahl Mitarbeiter (~ 60) zu realisieren.

    Es wäre eine Hilfe, wenn Du mögliche Terminblöcke, also z.B. zwei Tage früh, zwei Tage Mittel, zwei Tage spät, zwei Tage frei mal als Beispiel zusammenbaust. Um dann daraus OL-fähige Daten zu machen, fehlen ein Anfangsdatum, ein MA-Name mit E-Mail-Adresse und eine Terminblock-Bezeichnung.

    Dann ließe sich das mit zwei Tabellenblättern: Terminblöcke und Planung z.B. so realisieren:
    In den Terminblöcken setzt Du die Reihenfolge der Schichten hinter der Bezeichnung in eine Zeile. Diese Blöcke werden automatisch in ein DropDown für die Planung übernommen.
    In der Planung hast Du pro Zeile MA-Name | MA-Mail | Anfangsdatum. Dann folgt das DropDown, aus dem Du den Terminblock auswählen kannst.

    Wenn Du diese zwei Tabellen (die eigentlich Sache des Arbeitgebers Deiner Frau sind!) vorbereitest, baue ich Dir gerne den VBA-Code dafür.

    Schöne Grüße
     
    d'r Bastler, 8. Januar 2025
    #4
  5. Coryfin Neuer User
    Auweh ich glaube ich habe mein Anliegen sehr unverständlich formuliert, sorry.
    Also es ist so das diese Dienste (BD6, ND7, etc) jeden Monat in einer anderen Reihenfolge sind, es gibt kein Muster dahinter. Der Plan wird halt für jeden Monat vom Chef unter berücksichtigung diverser Faktoren neu erstellt.

    Meine Überlegung war jetzt, das ich via Drag and Drop für den jeweiligen Tag den Dienst in den Kalender ziehe und damit dann die entsprechenden Zeiten hinterlegt sind. Also damit man nicht immer alles neu einschreiben muss.

    Ich hoffe das meine Ausführung halbwegs verständlich ist

    Vielen Dank
     
    Coryfin, 9. Januar 2025
    #5
  6. d'r Bastler
    d'r Bastler Erfahrener User
    Moin Cory,

    das klingt natürlich doch "etwas anders" Vorgefertigte Terminblöcke :rolleyes: Nicht schlimm.

    Dann versuche ich mal, in meine Denke zu übersetzen: Du hast einen XL-Plan mit kryptischen Abk., in dem für jeden Tag eine (Frei-)Schicht eingetragen ist. Und die hättest Du gerne per Klick als Termine in Deinem Outlook eingetragen. Korrekt?

    Lass mich kurz wissen, ob ich da so richtig verstanden habe. Eine erste Idee, die ich aber ausarbeiten müsste, hätte ich schon. Für die Du vielleicht selbst das hier vorbereiten kannst:
    Erstelle in der Datei mit der Schichtliste (ich nenne das darin enthaltene Blatt jetzt einfach mal INPUT) ein zweites mit dem Namen OUTPUT. Im Input fehlt im Moment noch das Angangsdatum 01.02.2025 das Du manuell eintragen müsstest.
    Dann machst Du Dir im Output eine neue vertikale Liste mit einem Kalender des Monats im Format Datum kurz, also Tag.Monat.Jahr . Das kann man leicht mit VBA automatisieren. Auf die gleiche weise ordnest Du den Tagen ihre krypt. Abk. zu. Im letzten Schritt werden diese mithilfe der Legende in die Arbeitszeiten übersetzt.

    Jetzt sollte eine Zeile im Output so aussehen:
    Der nächste Schritt ist dann die Übertragung nach OL. Da mache ich dann gerne weiter.


    Grüße
     
    Zuletzt bearbeitet: 9. Januar 2025
    d'r Bastler, 9. Januar 2025
    #6
  7. Coryfin Neuer User
    Hy,
    (Dann versuche ich mal, in meine Denke zu übersetzen: Du hast einen XL-Plan mit kryptischen Abk., in dem für jeden Tag eine (Frei-)Schicht eingetragen ist. Und die hättest Du gerne per Klick als Termine in Deinem Outlook eingetragen. Korrekt?)

    Noch nicht ganz korrekt. Ich habe lediglich einen Zettel auf dem die Dienste (vom gesamten Personal für den Monat) oben stehen, also konkret steht dann da eine dieser kryptischen Abkürzungen, als Excel file bekomme ich es leider nicht. Ich habe es mal nach der folgenden Anleitung probiert Wie erstelle ich eine Termin- oder Besprechungsvorlage in Outlook? , das hatte dann zwar zur folge das ich den gewünschten Button hatte aber das auch nur für einen Dienst.

    Grüße
     
    Coryfin, 9. Januar 2025
    #7
  8. d'r Bastler
    d'r Bastler Erfahrener User

    Vorgefertigte Terminblöcke

    Moin,
    also nix mit XL als Ausgangspunkt!? Papyrus ist angesagt? Na klasse! Danke für diese frühe Info. 'n Haufen Arbeit für die Katz.
    Die Papyrus-Version gibt's dann morgen ...
    Grüße
     
    d'r Bastler, 9. Januar 2025
    #8
  9. d'r Bastler
    d'r Bastler Erfahrener User
    Moin Coryfin,

    hier nun also die Papyrus-Version, die aus einem Zettel mit den Schichtplänen Deiner Frau OL-Kalendereintraäge macht, als step-by-step Anleitung.

    Das hat allerdings mit Foren-üblicher Hilfe zur Selbsthilfe nicht mehr wirklich was zu tun (sorry, liebe Kollegen), weswegen Du hier nur die Basis-Variante siehst. Die umfassend ausgearbeite Fassung gibt es demnächst hier.

    Okay:
    1.) Du öffnest zuerst Deine Beispielmappe, dann ein neue, hast also zwei Mappen gleichzeitig. Dann kopierst Du Deine Legende (nur die paar Zellen mit Bezeichnungen und Zeiten) aus Deiner Beispielmappe in die neue Mappe in die Zelle H1. Die neue Mappe speichert Du z.B. als SturmfreieBude im Format .XLSB, die alte schließt Du und schmeißt sie weg. Achte bitte darauf, dass in der Zeile Frei keine weiteren Zellen belegt sind.

    2.) In der SturmfreienBude öffnest Du mit einem Rechtsclick auf den Tab der Tabelle1 -> Code anzeigen den VBA-Editor(VBE) und fügst folgenden Code in das große Fenster ein, speicherst die Datei und schließt den VBE wieder. Deine Tabelle 1 sollte nun Deinen Block mit Legende (ohne Überschrift und mit der Zeile Frei wie oben beschrieben) beinhalten.

    Code:
    Sub Step_1_MakeParameter() 'schreibt die Parameter der Schichten
    Dim i As Integer, r As Integer, p As Integer
    
    p = 8 '--> 8 = H --> Erste Spalte der Schichtliste ggf. anpassen
    r = Cells(Rows.Count, p).End(xlUp).Row
    
        'erst mal gezielt aufräumen
        For i = 2 To 5
            Columns(p + i).Cells.Clear
        Next i
     
        'Spaltenformatierung
        Columns(p + 1).AutoFit
        Columns(p + 2).NumberFormat = "hh:mm"
        Columns(p + 3).NumberFormat = "hh:mm"
        Columns(p + 4).NumberFormat = "0"
        Columns(p + 5).HorizontalAlignment = xlCenter
     
        'OL.Duration in Minuten berechnen
        For i = 1 To r
            Cells(i, p + 2) = Left(Cells(i, p + 1), 5)
            Cells(i, p + 3) = Right(Cells(i, p + 1), 5)
            Cells(i, p + 4) = DateDiff("n", Cells(i, p + 2), Cells(i, p + 3))
        
            'OL.Duration über Nacht berechnen
            If Cells(i, p + 4) < 0 Then
                Cells(i, p + 4) = DateDiff("n", Cells(i, p + 2), "23:59") + 1 + DateDiff("n", "00:00", Cells(i, p + 3))
            End If
        
            'Alias schreiben
            If Cells(i, p + 1) = "" Then
                Cells(i, p + 5) = "frei"
                Cells(i, p + 2) = "08:00"
                Cells(i, p + 3) = "08:15"
                Cells(i, p + 4) = "15"
            Else
                Cells(i, p + 5) = ChrW(63 + i)
            End If
    
        Next i
    
    End Sub
    
    Sub Step_2_MakeMonth() 'schreibt den Kalender für den nächsten Monat
    Dim sMonth As String, sYear As String, sDay As String, dDate As Date
    Dim iMonth As Integer, iYear As Integer, i As Integer, iLast As Integer
     
        'erst mal gezielt aufräumen
        For i = 1 To 6
            Columns(i).Cells.Clear
        Next i
     
        'Jahreswechsel
        iMonth = Month(Date) + 1
        iYear = Year(Date)
        sDay = "01."
        sMonth = Format(iMonth, "0#") & "."
            If iMonth = 1 Then
             iYear = iYear + 1
            End If
        sYear = iYear
        dDate = sDay & sMonth & sYear
     
        'Monatskalender schreiben
        iLast = Day(DateSerial(Year(dDate), Month(dDate) + 1, 0))
            For i = 1 To iLast
                Cells(i, 1) = dDate + i - 1
                Cells(i, 2).Style = "Eingabe"
            Next i
     
        'Spaltenformatierung
        Columns(2).NumberFormat = "@"
        Columns(2).HorizontalAlignment = xlCenter
        Columns(3).NumberFormat = "hh:mm"
        Columns(4).NumberFormat = "hh:mm"
        Columns(5).NumberFormat = "0"
    
        Cells(1, 2).Select
    
    End Sub
    
    Sub Step_3_GetParameter()
    Dim i As Integer, d As Integer, r As Integer, iLast As Integer, dict
    Set dict = CreateObject("Scripting.Dictionary")
    
        'letzte Spalte (Alias) definieren und in dict einlesen
        iLast = UsedRange.Columns.Count
        For i = 1 To iLast
            dict.Add i, Cells(i, iLast)
        Next i
     
        'Kalender mit Parametern füllen
        r = Cells(Rows.Count, 1).End(xlUp).Row
        For i = 1 To r
            For d = 1 To dict.Count
                If Cells(i, 2) = dict(d) Then
                    Cells(i, 3) = Cells(d, iLast - 3)
                    Cells(i, 4) = Cells(d, iLast - 2)
                    Cells(i, 5) = Cells(d, iLast - 1)
                End If
            Next d
        Next i
    Set dict = Nothing
    End Sub
    
    Sub Step_4_ShiftsToOutlook()
    Dim oApp As Object, oNameSpace As Object, oFolder As Object, oAppointment As Object
    Dim StartDate As String, StartTime As Date, EndTime As Date, sEnd As String, Subject As String, Location As String, Body As String
    Dim i As Integer, r As Integer, Duration As Integer
    
    Set oApp = CreateObject("Outlook.Application")
    Set oNameSpace = oApp.GetNamespace("MAPI")
    Set oFolder = oNameSpace.GetDefaultFolder(9) ' 9 steht für den Kalender
    
    r = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To r
        ' Setzt die Werte aus XL
        StartDate = Cells(i, 1)
        StartTime = Cells(i, 3)
        EndTime = Cells(i, 4)
        sEnd = Format(EndTime, "hh:mm")
        Subject = "Schicht " & Cells(i, 2) & " bis " & sEnd
        Duration = Cells(i, 5)
    
        ' Erstellt den Termin
        Set oAppointment = oFolder.Items.Add(1)
    
        ' Setzt die Eigenschaften des Termins
        With oAppointment
            .Start = StartDate & " " & StartTime
            .Subject = Subject
            .Duration = Duration
            .Save
        End With
        Set oAppointment = Nothing
    
    Next i
     
        ' Freigeben der Objekte
        Set oFolder = Nothing
        Set oNameSpace = Nothing
        Set oApp = Nothing
    
        MsgBox i - 1 & " Termine erfolgreich erstellt!"
    End Sub

    3.) Jetzt passiert's: Mit Alt-F8 öffnest Du das Makro-Menü und siehst vier Makros, die jeweils mit Step_... beginnen. Du beginnst ... Überraschung! Vorgefertigte Terminblöcke *:p* mit Step_1. Deine Legende wird in ihre Parameter zerlegt, die Schichten jeweils mit einem Alias A...K + frei (was die manuelle Eingabe erheblich erleichert) belegt und ihre Dauer in Minuten errechnet. Diesen step_1 musst Du nur einmal, bzw. wenn sich an den Schichtdetails Deiner Legende etwas ändert, ausführen. Speichere die Datei

    4.) Führe das Makro step_2 aus und Du bekommst in Spalte A den Kalender für den kommenden Monat (ohne Wochentage, die kann OL alleine).

    5.) Jetzt kommt die monatliche Handarbeit: Trage in Spalte B den Alias pro Datum Deines Zettels ein, prüfe die Einträge (einen Reset und Testdaten gibt es nur in der großen Version) und weiter zu step_3. Die Spalten A ... E enthalten jetzt die Daten, die für die Übertragung nach OL benötigt werden. Mit step_4 werden die Einträge an (auch ein ungeöffnetes) OL geschickt. Sie erscheinen dort als Eintrag "Schicht " & Alias & " bis " Schichtende mit der korrekten Dauer.

    Und nun noch zu guter Letzt und zur Vermeidung unnötiger Arbeit: Deine Anfrage war mit der (knapp völlig unnötigen) Beispieltabelle eigentlich gut belegt, aber leider nicht wirklich gut formuliert. Hier eine Helfer-freundliche Version:

    Meine Frau bekommt ihre monatlichen Schichtpläne in Papierform. Es sind dort nur die Schichtbezeichnungen vermerkt, für die ich aber eine Legende habe. (z.B. TD6 | 18:00-23:00). Wie kann ich diese Schichten nach Eingabe in XL in OL-Termine übertragen?

    Dann wäre nach einer Frage nach den Details aller Schichten schnell die hier gezeigte Lösung herausgekommen.

    Viel Spaß damit und Grüße!
     
    d'r Bastler, 10. Januar 2025
    #9
  10. Coryfin Neuer User
    Vielen Dank dafür, und ja, ich bin mir dessen absolut bewusst das es mehr wie die übliche Unterstützung ist! Vielen Dank!
     
    Coryfin, 14. Januar 2025
    #10
    1 Person gefällt das.
Thema:

Vorgefertigte Terminblöcke

Die Seite wird geladen...
  1. Vorgefertigte Terminblöcke - Similar Threads - Vorgefertigte Terminblöcke

  2. Terminblocker erstellen

    in Microsoft Outlook Hilfe
    Terminblocker erstellen: Hallo zusammen Gibt es die Möglichkeit im Outlook 2016 einen Terminzeitraum zu sperren. Es sollte nicht mehr möglich sein, dass jemand anderer im angegeben Zeitraum einen Termin hinein stellen...
  3. Outlook-Termin mit automatischen Terminblocker

    in Microsoft Outlook Hilfe
    Outlook-Termin mit automatischen Terminblocker: Hallo zusammen, ich habe ein Problem zu lösen, bei dem ich der Suche im Internet bisher keine Idee, oder Lösung fand. Deshalb wende ich mich jetzt an euch. Es geht um folgendes: System: Exchange...
  4. WORD 2000!! Vorgefertigte Seiten

    in Microsoft Word Hilfe
    WORD 2000!! Vorgefertigte Seiten: Hallo. Ich habe folgendes Problem, ich muss mit Word eine normale word datei erstellen für Kunden. Nur soll diese Datei mit freien Feldern sein, die dann automatisch ausgefüllt werden sollen...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden