Office: (Office 2016) Excel Daten als Kalendereintrag in Outlook

Helfe beim Thema Excel Daten als Kalendereintrag in Outlook in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich habe von einem User einen Code Snippsel empfohlen bekommen um Excel Daten in Outlook zu übertragen bzw in Outlook ein... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Horst14, 24. Juni 2020.

  1. Excel Daten als Kalendereintrag in Outlook


    Hallo zusammen,
    ich habe von einem User einen Code Snippsel empfohlen bekommen um Excel Daten in Outlook zu übertragen bzw in Outlook ein Kalendereintrag vorzunehmen.
    Hajo_Zi vielleicht ließt du sogar mit.

    Ich habe den Code auch schon ein bisschen angepasst.

    Was soll der Code am ende machen?
    Ich habe ein Excel Formular erstellt was ich nehmen möchte um Urlaub zu beantragen. Wenn dieser genehmigt wird, soll der Vorgesetzte auf einen Button klicken können mit dem er den Urlaub genehmigt und gleichzeitig einen Outlook eintrag macht sowie diesen an den Antragsteller zurücksendet und zusätzlich an eine E-mail Gruppe

    Das Urlaubsanfangsdatum steht in celle B11 und das ende in D11
    Jetzt soll er in dem Terminkalender, der Ebenfalls zu einer Gruppe gehört dieses Datum eintragen. (die Gruppe heißt Mitarbeiter)
    Zusätzlich soll eine E-mail an den Antragsteller gesendet werden sowie im CC eine person aus der Buchhaltung und die Gruppe Mitarbeiter.

    Kann mir jemand die 2 Module So anpassen, dass diese das machen was ich möchte?
    Insofern Datum von und Datum bis übereinstimmen, darf auch nur ein halber Tag Urlaub berechnet werden. DAzu würde im Feld E11 Vormittag oder Nachmittag stehen.


    Code:
    Code:
    Danke für eure Unterstützung.

    :)
     
    Horst14, 24. Juni 2020
    #1
  2. Hallo Horst,

    hier mal auf die Schnelle eine Idee (etwas abgewandelt zu Deiner Vorlage) zu dem gewünschten Prozess.
    Kann man ja ggf. noch weiter anpassen.

    Schau mal, ob's so funktioniert...

    Option Explicit

    Sub Urlaubsgenehmigung()
    'Erstellt einen Kalendereintarg und sendet eMail
    Dim oOutApp As Object, WSh As Worksheet
    Dim sAnlage As String

    Set WSh = Sheets("Tabelle1") 'Tabelle festlegen
    Set oOutApp = CreateObject("Outlook.Application")

    'Kalendereintrag generieren
    With oOutApp.CreateItem(1) 'Termin-Item kreierien
    .Start = Format(WSh.Range("B11").Value, "dd.mm.yyyy") & " 00:00" 'Startdatum
    .End = Format(WSh.Range("D11").Value, "dd.mm.yyyy") & " 00:00" 'Endedatum
    .Subject = "Urlaub: " _
    & WSh.Range("J2").Value & " genehmigt" 'Betreff
    .Body = "" 'Zusätzlicher Text
    .Location = "" 'Ort
    ' .ReminderMinutesBeforeStart = 10 'Erinnerung
    ' .ReminderPlaySound = False 'mit Sound
    ' .ReminderSet = False 'Erinnerung wiederholen
    .Save 'Termin speichern
    End With

    'eMail generieren
    With oOutApp.CreateItem(0) 'Mail-Item kreieren
    .To = WSh.Range("B4").Value & " at firma.de"
    .CC = "buchhaltung at firma.de; mitarbeiter at firma.de"
    .Subject = "Urlaubsantrag " & WSh.Range("J2").Value
    .GetInspector
    .Body = "Anbei befindet sich der genehmigte Urlaubsantrag." & vbCrLf & .Body
    .Display 'Erstellt die Email und öffnet diese. Der Versand erfolgt anschließend manuell vom User!
    sAnlage = "C:\Users\Userurlaub.xlsm" 'Anlage festlegen
    If Dir$(sAnlage) <> "" Then 'Prüfen, ob ANlage vorhanden
    .Attachments.Add sAnlage 'Anlage anfügen
    Else
    MsgBox "Datei '" & sAnlage & "' wurde nicht gefunden!", vbCritical, "eMail senden"
    End If
    '.Send 'Sendet die Email automatisch
    End With

    Set oOutApp = Nothing

    End Sub
    Viele Grüße aus Freigericht
    Karl-Heinz

    PS: Das @-Zeichen verhunzt mir hier diesen HTML-Code. Bitte entsprechend "at" dann ersetzen.
     
    volti, 25. Juni 2020
    #2
  3. Hajo_Zi
    Hajo_Zi Erfahrener User
    Hallo Horst,

    warum neuen Beitrag?
    Zu den makros von Ramses kann ich keine Auskunft geben.
    Ramses ist selber wohl nicht mehr in den Foren.
    Vielleicht Mail.
    Bitte berücksichtige das Themen die Erledigt sind als Erledigt markiert werden können. Also mache es unten links mit Klick auf den Schalter "als erledigt setzen", falls Problem gelöst.
    Der Zustand des Beitrages wird dann in der Übersicht angezeigt und man braucht sich diese Beiträge nicht mehr ansehen.





    Meine Homepage Homeseite - Hajo's Excelseiten
     
    Hajo_Zi, 25. Juni 2020
    #3
  4. Excel Daten als Kalendereintrag in Outlook

    Hi,
    @Hajo_Zi na weil es ein Excel Thema ist und ich dachte, dass es hier besser aufgehoben ist. In dem Andren Beitrag habe ich ja nur gefragt wie man das Prob. lösen könnte.

    @volti danke für deine Idee. Es funktioniert soweit fast :-).
    Er trägt den Urlaub ein jedoch wenn ich z.b vom 01.07.-04.07.20 eintrage dann markiert er den letzten Tag (4.) im Kaleder nicht mit blau.
    Der müsste auch den letzen Tag mit Markieren.
    Wo kann ich den Kalender in den er schreiben soll einstellen? ER soll wie gesagt in ein Gruppen Kallender schreiben.
    Und ist es möglich, das der Makro selbst schaut wo das Dokument abgelegt wurde? Also das er sich fragt wo liege ich und sich von da versendet? Falls ein User die Datei nicht unter: "C:UsersUserurlaub.xlsm" ablegt?

    Ich danke euch.
     
    Horst14, 26. Juni 2020
    #4
  5. Hallo Horst,

    zu Deiner ersten Frage: Ersetze einfach beim End-Datum die 00:00-Uhr durch 23:59, dann wird auch der letzte Tag mit einbezogen.

    Und ja, man kann auch die Urlaubsantragsdatei suchen lassen.....

    Zu der Aktivierung eines abweichenden Gruppenkalenders kann ich Dir derzeit nicht weiterhelfen. Ich bin kein Outlook-Experte und habe als Privatier auch keinerlei Zugriff auf Gruppenkalender.
    Vielleicht kann Dir da jemand anders hier noch weiterhelfen.
    Oder Du suchst selbst. Z.B. Stichword GetSharedDefaultFolder usw.

    Falls ich doch noch was rausfinden sollte, melde ich mich noch mal. Ist aber eher unwahrscheinlich.


    Option Explicit

    Dim gsAnlage As String

    Sub Urlaubsgenehmigung()
    'Erstellt einen Kalendereintrag und sendet eMail
    Dim oOutApp As Object, WSh As Worksheet, sPfadname As String

    'Startpfad für die Anlagensuche hier vorgeben
    sPfadname = "C:\Users\" & Environ("Username") & "\Documents"
    Set WSh = Sheets("Tabelle1") 'Tabelle festlegen
    Set oOutApp = CreateObject("Outlook.Application")

    'Kalendereintrag generieren
    With oOutApp.CreateItem(1) 'Termin-Item kreierien
    .Start = Format(WSh.Range("B11").Value, "dd.mm.yyyy") & " 00:00" 'Startdatum
    .End = Format(WSh.Range("D11").Value, "dd.mm.yyyy") & " 23:59" 'Endedatum
    .Subject = "Urlaub: " _
    & WSh.Range("J2").Value & " genehmigt" 'Betreff
    .Body = "" 'Zusätzlicher Text
    .Location = "" 'Ort
    ' .ReminderMinutesBeforeStart = 10 'Erinnerung
    ' .ReminderPlaySound = False 'mit Sound
    ' .ReminderSet = False 'Erinnerung wiederholen
    .Save 'Termin speichern
    End With

    'eMail generieren
    With oOutApp.CreateItem(0) 'Mail-Item kreieren
    .To = WSh.Range("B4").Value & "@firma.de"
    .CC = "buchhaltung @firma.de; mitarbeiter @firma.de"
    .Subject = "Urlaubsantrag " & WSh.Range("J2").Value
    .GetInspector
    .Body = "Anbei befindet sich der genehmigte Urlaubsantrag." & vbCrLf & .Body
    .Display 'eMail anzeigen
    gsAnlage = ""
    GetFile sPfadname, "Urlaub*.xls*" 'Dateiname mit Platzhaltern möglich
    If gsAnlage <> "" Then 'Prüfen, ob Anlage vorhanden
    .Attachments.Add gsAnlage 'Anlage anfügen
    Else
    MsgBox "Datei '" & gsAnlage & "' wurde nicht gefunden!", vbCritical, "eMail senden"
    End If
    '.Send 'Sendet die Email automatisch
    End With

    Set oOutApp = Nothing

    End Sub

    Sub GetFile(sPathname As String, sSearchFile As String)
    'Ermittelt eine Datei (incl. Platzhalter im Ordner und Unterordner
    Dim oFile As Object, oDir As Object

    If gsAnlage <> "" Then Exit Sub 'Suchbegriff gefunden=>raus

    On Error Resume Next

    With CreateObject("scripting.filesystemobject").GetFolder(sPathname)

    'Ordner durchsuchen
    For Each oFile In .Files
    If Err = 0 Then
    If oFile.Name Like sSearchFile Then
    gsAnlage = sPathname & "\" & oFile.Name
    Exit Sub
    End If
    End If
    Next

    'Unterordner durchsuchen
    For Each oDir In .Subfolders
    GetFile sPathname & "\" & oDir.Name, sSearchFile
    Next

    End With

    End Sub
    Viele Grüße aus Freigericht
    Karl-Heinz
     
    volti, 26. Juni 2020
    #5
  6. Danke für deine Hilfe.

    Du hast mich ein ganzes Stück weiter gebracht.

    Ich habe inzwischen das gefunden:
    Code:
    Damit wird das aktuelle Dokument als Anhang versendet also eigentlich das was ich will oder könnte ich damit Probleme bekommen?

    Meine 2. Frage wäre:
    Mit folgdendem Modul kopiere ich unter anderem
    Das Datum von Bis und wieviel Tage Urlaub es sind.

    Code:
    Wie müsste die schleife aussehen, damit er wenn zeile 17 belegt 18 nimmt bzw dann weiter schaut... Ich möchte den Urlaub der genommen wurde mit dokumentieren.
     
    Horst14, 26. Juni 2020
    #6
  7. Hallo Horst,

    das mit der Anlage hätte ich Dir auch sagen und Arbeit sparen können. Da habe ich Dich wohl nicht richtig verstanden.

    Möglicherweise wäre das Hochladen einer Mustermappe hier vorteilhafter gewesen.

    Das gleiche gilt für das nachfolgende Makro, dass ohne Beispieldatei auch nur mustermäßig ist.
    Denn es bleiben die Fragen, ob Ziel- und Quellblatt in der gleichen Datei sind (wohl eher nicht) und warum einmal Zeile 9 ansonsten aber immer Zeile 17 befüllt wird, usw.

    Schau mal, ob Du mit dem u.a. Code etwas anfangen kannst....


    Sub AntragLeeren()
    'Trägt die Daten vom Quellblatt in die erste freie Zielblattzeile ein
    Dim WSh As Worksheet, iZeile As Long

    Set WSh = ActiveSheet 'Workbooks("Datei.xlsx").Sheets("Quellblatt") 'Quelltabelle angeben

    With ThisWorkbook.Sheets("Tabelle1") 'Zieltabelle angeben
    iZeile = .Cells(.Rows.Count, "B").End(xlUp).Row + 1 'Erste freie Zeile suchen
    If iZeile < 17 Then iZeile = 17
    .Cells(iZeile, "B").Value = WSh.Cells(15, "D").Value
    .Cells(iZeile, "J").Value = WSh.Cells(15, "B").Value
    .Cells(iZeile, "L").Value = WSh.Cells(11, "B").Value
    .Cells(iZeile, "N").Value = WSh.Cells(11, "D").Value
    WSh.Range("B11,D11").ClearContents 'Zellen leeren
    End With

    End Sub

    Viele Grüße aus Freigericht
    Karl-Heinz
     
    volti, 26. Juni 2020
    #7
  8. Excel Daten als Kalendereintrag in Outlook

    Hi volti,
    ja es funktioniert fast.
    D15 darf nur nicht nach B17 sondern nach B9

    Ich habe es in der schleife auskommentiert und
    nach der schleife folgendes geschrieben:

    Code:
    das funktioniert nicht.
    und
    Code:
    DAnn markiert er B9 und D15 ist gestrichelt umrandet als will er damit rechnen.
    Dabei soll er doch B9 mit dem was in D15 steht ersetzn35.

    Das war ganz gut so da habe ich wenigstens noch eine andere möglichkeit kennengelernt und dabei etwas gelernt :-)

    Ja sie sind in einer Datei/ Zielblatt.

    Anbei das Beispiel.

    Ich danke dir.
     
    Horst14, 27. Juni 2020
    #8
  9. Hallo Horst,

    Dein code .Cells(9, "B").Value = WSh.Cells(15, "D").Value muss innerhalb des WITH-Bereichs stehen.
    Der führende Punkt bezieht sich auf das dort angegebene Tabellenblatt.

    Aber letztendlich hättest Du lediglich
    .Cells(iZeile, "B").Value = WSh.Cells(15, "D").Value
    in
    .Cells(9, "B").Value = WSh.Cells(15, "D").Value
    ändern brauchen.

    Es ist ja auch keine Schleife, die mehrfach durchlaufen wird, sondern der code wird nur einmalig abgearbeitet.

    PS: Wenn sich alles eh auf dem aktiven Blatt abspielt reicht auch der u.a. Code hierfür aus:




    Sub AntragLeeren()
    Dim iZeile As Long

    iZeile = Cells(Rows.Count, "B").End(xlUp).Row + 1 'Erste freie Zeile suchen
    If iZeile < 17 Then iZeile = 17
    Cells(9, "B").Value = Cells(15, "D").Value
    Cells(iZeile, "J").Value = Cells(15, "B").Value
    Cells(iZeile, "L").Value = Cells(11, "B").Value
    Cells(iZeile, "N").Value = Cells(11, "D").Value
    Range("B11,D11").ClearContents 'Zellen leeren

    End Sub

    viele Grüße
    Karl-Heinz
     
    volti, 27. Juni 2020
    #9
  10. Hi danke für deine Hilfe.

    In der unten stehenden Zeile musste noch B auf J geändert werden.
    Jetzt funktioneirt es.
    Danke für deine Hilfe!

    Ich muss jetzt mal schauen wie ich die Nummer mit dem Halben Tag Urlaub am besten löse.
    Kann ich mit einem MAkro prüfen ob Diffdate 0 ist und anschließend 0,5 für halben Tag wählen?
     
    Horst14, 27. Juni 2020
    #10
  11. Hallo Horst,

    halbe Tage vielleicht so:?



    [+][-]Sub Urlaubsgenehmigung()
    'Erstellt einen Kalendereintarg und sendet eMail
    Dim oOutApp As Object, WSh As Worksheet
    Dim sAnlage As String, sZeit1 As String, sZeit2 As String

    Set WSh = Sheets("Tabelle1") 'Tabelle festlegen
    Set oOutApp = CreateObject("Outlook.Application")

    'Kalendereintrag generieren
    With oOutApp.CreateItem(1) 'Termin-Item kreierien
    sZeit1 = " 00:00": sZeit2 = " 23:59"
    If WSh.Range("B11").Value <> "" Then
    If WSh.Range("B11").Value = WSh.Range("D11").Value Then
    If WSh.Range("B13").Value Like "nachmittag*" Then
    sZeit1 = " 12:00": sZeit2 = " 23:59"
    ElseIf WSh.Range("B13").Value Like "vormittag*" Then
    sZeit1 = " 00:00": sZeit2 = " 12:00"
    End If
    End If
    End If

    .Start = Format(WSh.Range("B11").Value, "dd.mm.yyyy") & sZeit1 'Startdatum
    .End = Format(WSh.Range("D11").Value, "dd.mm.yyyy") & sZeit2 'Endedatum
    .Subject = "Urlaub: " _
    & WSh.Range("B4").Value & " genehmigt" 'Betreff
    .Body = "" 'Zusätzlicher Text
    .Location = "" 'Ort
    ' .ReminderMinutesBeforeStart = 10 'Erinnerung
    ' .ReminderPlaySound = False 'mit Sound
    ' .ReminderSet = False 'Erinnerung wiederholen
    .Save 'Termin speichern
    End With

    'eMail generieren
    With oOutApp.CreateItem(0) 'Mail-Item kreieren
    .To = WSh.Range("B4").Value & "@firma.de"
    .CC = "buchhaltung@firma.de; alle@firma.de"
    .Subject = "Urlaubsantrag " & WSh.Range("B4").Value
    .GetInspector
    .Body = "Anbei befindet sich der genehmigte Urlaubsantrag." & vbCrLf & .Body
    .Display 'Erstellt die Email und öffnet diese. Der Versand erfolgt anschließend manuell vom User!

    'Festlegen eines Pfades welches Dokument mitgesendet werden soll
    'sAnlage = "C:\Users\Userurlaub.xlsm" 'Anlage festlegen
    'If Dir$(sAnlage) <> "" Then 'Prüfen, ob Anlage vorhanden
    ' .Attachments.Add sAnlage 'Anlage anfügen
    'Else
    'MsgBox "Datei '" & sAnlage & "' wurde nicht gefunden!", vbCritical, "eMail senden"
    'End If

    'Aktuelles Dokument als Anlage senden
    .Attachments.Add ThisWorkbook.FullName
    'Lesebestätigung aus
    .ReadReceiptRequested = False
    '.Send 'Sendet die Email automatisch
    End With

    Set oOutApp = Nothing

    End Sub
    viele Grüße aus Freigericht
    Karl-Heinz
     
  12. Hi volti, sorry Fehler von mir, ich habe mich nicht richtig ausgedrückt.
    Der Kalender Eintrag war klar. Aber mir geht es um das Excel Dokument, da ich nur 0.5 Tage Urlaub abziehen darf.
    Bei datediff rechnet er 0 Tage aus und somit würde beim Resturlaub nie etwas abgezogen werden.
    Weißt du was ich meine?
     
    Horst14, 27. Juni 2020
    #12
  13. Excel Daten als Kalendereintrag in Outlook

    Alles klar (hoffentlich. *Smilie

    Kann ich mit einem MAkro prüfen ob Diffdate 0 ist und anschließend 0,5 für halben Tag wählen?

    Da sollte es kein Problem geben. Allerdings müsste das mit dem Eintrag "Vormittag/Nachmittig" gegengecheckt werden.
    Denn es kann bei gleichem Datum (DateDiff=0) doch auch ein ganzer Tag Urlaub geommen worden sein.

    VG KH
     
  14. Hi,
    es will einfach nicht ganz klappen....

    Ich habe jetzt bei B16 ein Drop Down Menü erstellt Ganztägig, Vormittag und Nachmittag.
    Zusätzlich habe ich Datedif in V5 gepackt.

    Code:
    Das Funktioneirt aber nicht.
    Wenn der zeitraum größer 0 ist, ist alles gut,
    Wenn der Zeitraum 0 ist Ganztägig wird keine 1 in B16 geschrieben.
    Bei "Vormittag" und "NAchmittag" wird auch keine 0,5 geschrieben.

    Ich habe einen Rechtsklick auf das Tabellenblatt gemacht "Code hinzufügen" und dann den Code da rein geschrieben.

    Es ist alles nochmal eine Zeile nach Unten gerutscht :-).

    Ich hoffe es ist nur ein kleiner flüchtigkeitsfehler aber ich komme nicht drauf. :-(
     
    Horst14, 2. Juli 2020
    #14
  15. So funktioniert es:
    Code:
    Die Meldung in der MassageBox funktioniert nur noch nicht.
    JEtzt überschreibt er mir auch die Formel in B16 :-( und bei Felder leeren schreibt er immer 1 statt 0,5.
     
    Horst14, 2. Juli 2020
    #15
Thema:

Excel Daten als Kalendereintrag in Outlook

Die Seite wird geladen...
  1. Excel Daten als Kalendereintrag in Outlook - Similar Threads - Excel Daten Kalendereintrag

  2. XY-Diagramm-Grafik mit zusätzlichen Daten erweitern

    in Microsoft Excel Hilfe
    XY-Diagramm-Grafik mit zusätzlichen Daten erweitern: Servus! Im Zuge meiner MA-Arbeit müsste ich bereits ermittelte Daten, welche als PDF vorliegen in Excel durch eigens ermittelte erweitern (Bild1). Da wir zu den eigentlichen Daten keinen Zugang...
  3. Import Daten aus Access Abfrage klappt nicht

    in Microsoft Excel Hilfe
    Import Daten aus Access Abfrage klappt nicht: Moin, ich habe ein Problem. Ich habe eine Datenbank in Access mit diversen Tabellen und Abfragen. Jetzt habe ich eine neue Abfrage erstellt und muß das Ergebnis täglich in eine Exceldatei...
  4. Teil der Daten von Spalte A in Spalte B verschieben

    in Microsoft Excel Hilfe
    Teil der Daten von Spalte A in Spalte B verschieben: Hallo zusammen, ich habe in Spalte A/ Zelle 1 folgenden Textinhalt: P-100-403497-EL30. Gerne möchte ich nun "-EL30" von Spalte A/Zelle1 ausschneiden und in Spalte B/Zelle 1 "EL30" einfügen....
  5. Bestimmte Ziffern in Zelle entfernen

    in Microsoft Excel Hilfe
    Bestimmte Ziffern in Zelle entfernen: Hallo zusammen, Ich habe z.B. in meiner Spalte A/ Zelle 146 folgendes stehen "P-100-301783-10001". Ich möchte gerne in Spalte B/ Zelle 146 den gleichen Text von Spalte A/ Zelle 146 kopieren und...
  6. Excel lädt die Daten nicht sobald Abfragekriterium für ein Textfeld erstellt wird

    in Microsoft Access Hilfe
    Excel lädt die Daten nicht sobald Abfragekriterium für ein Textfeld erstellt wird: Hey Ihr Lieben, ich habe eine Abfrage erstellt und das Kriterium - Wie "*gelb*" - angegeben. Sprich: Mir werden alle Datensätze angezeigt die irgendwo das Wort "gelb" in sich haben. Nun...
  7. Daten aus Excel nach Word

    in Microsoft Word Hilfe
    Daten aus Excel nach Word: Hallo Zusammen, ich bin neu hier und habe folgende Problemstellung, die ich auch im EXCEl-Bereich bereits eingestellt habe, mir aber gesagt wurde, damit wäre ich im Word-Forum besser aufgehoben....
  8. [Excel, VBA] Daten aus Excel-Bereich in Word Tabelle einfügen

    in Microsoft Excel Hilfe
    [Excel, VBA] Daten aus Excel-Bereich in Word Tabelle einfügen: Hallo zusammen, ich stehe im Augenblick vor folgendem Problem. Habe in einem Excelsheet einen Bereich (5 Spalten, 2 Zeilen) mit Daten, dessen Inhalt ich gerne in ein Word-Dokument in eine...
  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