Hallo, ich habe eine Tabelle die mit Ampelfunktion ausgestattet ist.
Es geht in der Tabelle um Schwertransportgenehmigungen die zeitlich begrenzt sind. Ich möchte gerne per Email oder per Outlookkalender informiert werden wenn die Laufzeit z.B. gelb erreicht, sprich 60 oder 90 Tage.
Ist das möglich und wenn ja wie????
Ich habe die Tabelle mit angehängt und ich würde mich freuen wenn mir jemand helfen könnte.
eine Info per E-Mail aus Excel heraus hat zwei Voraussetzungen. Zum einen muss Excel gestartet sein und zum anderen muss einer vor dem Rechner sitzen und im Outlook "Senden" betätigen. Aus Sicherheitsgründen ist es schon seit langem nicht mehr möglich, aus Office heraus E-Mails direkt zu senden. Um trotzdem E-Mails senden zu können muss man andere Wege beschreiten. Schaue Dir z.B. mal das an
Moin, also die Excel Datei schaffe ist bei mir auf dem Rechner, da aber dort an die 100 Termine drinnen sind möchte ich die Erinnerung direkt auf meinen Emailaccount bekommen. Wenn das nicht möglich ist dann wenigstens in den Outlookkalender. Es ist zeitaufwendig die ganzen Termine zu kontrollieren
hier mal ein Code. Der nimmt die Termine aus Spalte G, macht einen Termin draus mit einer Woche Erinnerung, und dann wird in Spalte U noch eine ID eingetragen. Was alles passiert ist kommentiert, kann man einiges ändern. Der Code kommt in ein normales Modul...
Code:
Option Explicit
Sub Excel_Control_Termin_nach_Outlook() Dim wksSheet As Worksheet Dim objFolder As Object Dim objOutApp As Object Dim objTermin As Object Dim lngRow As Long Dim LMinuten As Long
'On Error GoTo Fin Set wksSheet = ThisWorkbook.Worksheets("Autokran") ' Anpassen!!! Set objOutApp = CreateObject("Outlook.Application") '9 = olFolderCalendar Set objFolder = objOutApp.GetNamespace("MAPI").GetDefaultFolder(9) 'Schleife von Zeile 3 bis zur letzten gefuellten Zelle in Spalte A For lngRow = 3 To Cells(Rows.Count, 1).End(xlUp).Row 'Wenn in Spalte 7 (G) ein Datum steht, dann If IsDate(wksSheet.Cells(lngRow, 7).Value) Then 'Wenn Termin nicht schon vorhanden, dann If Not fncPointExist(objFolder, wksSheet.Cells(lngRow, 2).Value) Then Set objTermin = objOutApp.CreateItem(1) 'LMinuten = Format(wksSheet.Cells(lngRow, 4).Value, "h.mm") With objTermin 'Starttermin (hier bswp.: Datum der Zelle um 14 Uhr) .Start = Format(wksSheet.Cells(lngRow, 7).Value, "dd.mm.yyyy") & " 14:00" '.Start = Format(wksSheet.Cells(lngRow, 7).Value, "dd.mm.yyyy") & " " & Format(wksSheet.Cells(lngRow, 3).Value, "hh:mm") 'Ende des Termins '.End = Format(wksSheet.Cells(lngRow, 2).Value, "dd.mm.yyyy") & " 20:00" '.End = Format(wksSheet.Cells(lngRow, 2).Value, "dd.mm.yyyy") '& " " & wksSheet.Cells(lngRow, 4).Value 'Daten aus Spalte A als Subjekt .Subject = wksSheet.Cells(lngRow, 1).Value 'Inhalt des Termins .Body = "Das macht Spass!" 'Ort .Location = "DEKRA Gera" '.Location = wksSheet.Cells(lngRow, 5).Value & " - " & wksSheet.Cells(lngRow, 6).Value 'Dauer in Minuten .Duration = 15 '.Duration = wksSheet.Cells(lngRow, 4).Value 'Erinnerung vor Start in Minuten .ReminderMinutesBeforeStart = 7 * 24 * 60 '7 Tage 'Sound abspielen .ReminderPlaySound = True 'Erinnerung setzen .ReminderSet = True 'Kategorie = Farbe .categories = "dringend" 'Speichern .Save 'In Spalte 21 (U) ID eintragen wksSheet.Cells(lngRow, 21) = .EntryID End With Set objTermin = Nothing 'Ende Wenn Termin nicht schon vorhanden, dann End If 'Wenn in Spalte 7 (G) ein Datum steht, dann End If Next lngRow Fin: If Err.Number <> 0 Then MsgBox "Fehler: " & _ Err.Number & " " & Err.Description Set objFolder = Nothing Set objTermin = Nothing Set objOutApp = Nothing If Err.Number = 0 Then MsgBox "Termine nach Outlook ?bertragen!" End Sub
Private Function fncPointExist(ByVal objTMP As Object, _ ByVal strSubject As String) As Boolean Dim objItem As Object For Each objItem In objTMP.Items If objItem.Subject = strSubject Then fncPointExist = True Next End Function
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
anbei mal mit einem wöchentlichen Termin. Machst einfach ...yearly draus und müsstest die Daten noch aus Zellen entnehmen, ich hab das zum Test nur fest drin. Relevant für die Serie ist im Prinzip dieser Teil:
Code:
'woechentliche Serie bilden With .GetRecurrencePattern .PatternStartDate = #9/20/2020# .PatternEndDate = #12/12/2020# .RecurrenceType = olRecursWeekly End With
oben hab ich dann auch die Variablendeklarationen angepasst.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Zitat:Es wurde aber der End-Termin nicht beachtet, es wurden 64 Termine eingetragen => 64 Jahre.
Hätte ich auch gerne noch, natürlich bei bester Gesundheit Andererseits, Du weißt doch, bei Luther waren's 2017 500 Jahre :15:
Hier mal zwei weitere Parameter. Da ist dann auch die Reihenfolge relevant. Du musst am Anfang erst mal den "Button" bzw. die Eigenschaft für das Enddatum setzen, dann klappt es mit Anfang und Ende. Occurrences wäre die Alternative für die Anzahl Termine, dann lässt Du NeEndDate weg.