Ampelfunktion mit Email oder Outlookkalender verbinden
#1
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.




Vielen Dank im voraus


Angehängte Dateien
.xlsx   Dauergenehmigungen und §70 AK und LKW.xlsx (Größe: 79,82 KB / Downloads: 14)
Top
#2
Guten Morgen hat keiner eine Lösung oder ist das so unmöglich????
Top
#3
Hallöchen,

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

Sending mail from Excel with CDO


Send Email from Excel using VBA and VBScript
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#4
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
Top
#5
Hallöchen,

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)
Top
#6
Hallo André,

normaler Termin geht schon mal.

Kannst Du bitte versuchen, damit eine Terminserie (z.B. Geburtstag) für mehrere Jahre einzutragen?
Top
#7
Hallo Ralf,

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.


Angehängte Dateien
.xlsm   ExcelTermineOutlook.xlsm (Größe: 20,62 KB / Downloads: 3)
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#8
Hi André,

danke, jährlich hat bei mir auch funktioniert.

Es wurde aber der End-Termin nicht beachtet, es wurden 64 Termine eingetragen => 64 Jahre. Smile
Top
#9
Hi Ralf,

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 Smile 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.

Code:
.RecurrenceType = olRecursYearly
.NoEndDate = False
.PatternStartDate = #10/28/2020#
.PatternEndDate = #10/28/2022#
' .Occurrences = 5
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#10
Hi André,

wenn ich das so teste:
Code:
With .GetRecurrencePattern
         .RecurrenceType = olRecursYearly
         .NoEndDate = False
         .PatternStartDate = #01/01/2020#
         .PatternEndDate = #12/31/2026#
'         '.Occurrences = 5
       End With

wird, egal was bei .NoEndDate eingetragen ist, das Enddatum eingetragen.

Wie kann ich das z.B. .PatternStartDate über eine Variable/Zellverweis setzen?

Auch wenn ich das End-Datum auskommentiere, bleibt es noch im Speicher bestehen.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste