rholeonis
Goto Top

Automatische Erinnerung an Geburtstage

Hallo!!

Ich habe mal wieder ein spezielles Problem. Ich habe eine Excel-Tabelle mit etwa 250 Datensätzen, die Name und Geburtstag von bestimmten Person beinhalten. Ich möchte nun irgendwie erreichen, dass ich an dem jeweiligen Tag erinnert werde, wenn eine dieser Personen Geburtstag hat. Wie das technisch umgesetzt wird, ist zunächst einmal egal. Ideal wäre eine Art täglicher Statusreport mit den jeweiligen Geburtstagen.

Mir ist bewusst, dass ich mich über die Kalenderfunktion von Outlook erinnern lassen kann. Dies ist allerdings aus zwei Gründen unpraktikabel. Zum einen möchte ich den Inhalt der Tabelle nicht in meinen Outlook-Kalender übertragen müssen. Zum anderen finde ich es sehr unübersichtlich, wenn ich jeden Morgen mehrere Erinnerugen bekomme. Da wäre ein o.g. Statusreport schon netter.

Umzusetzen sollte das ganze entweder mit einem Office-Produkt (ich hatte in dem Zusammenhang schon mal was von InfoPath gehört) oder mit einem kostenlosen Zusatztool oder am besten mit Windows-Bordmitteln. Zur Info: Ich habe Windows Vista oder XP und dazu Office 2007.

Danke für jeden Hinweis!!

Content-Key: 130121

Url: https://administrator.de/contentid/130121

Ausgedruckt am: 19.03.2024 um 09:03 Uhr

Mitglied: nube-li
nube-li 24.11.2009 um 13:43:53 Uhr
Goto Top
hi

Wenn dann sonst abfragen einbauen..

If geburtstagsfeld/spalte/zeile/whatever =(HEUTE) then Rot hinterlegt else nada

Hoffe du kommst weiter..

Edit:

http://www.bilderload.com/bild/18933/200911241414047PEVE.jpg

Zelle D3 "=HEUTE()"

Spalte "Geburtsdatum" mit "Format" -> "Bedingte Formatierung" formatiert

Greez
Mitglied: TsukiSan
TsukiSan 25.11.2009 um 02:56:49 Uhr
Goto Top
ich weiß nicht, wie die Excel-Spalten/-Zeilen bei dir aufgebaut sind, aber
so wie nube-li es schon angesetzt hat, kann man sich die Meldungen auf den
Monitor bringen lassen.
Du kannst nach dem booten ein Script laufen lassen, was die Excel-Datei kurz
durchliest, und alle Einträge, welche mit dem "heutigen" Tag im Einklang des Geburtstages stehen,
als Nachricht ausgeben lassen.
Das ginge zum Beispiel mit VBS- Ist ein Boardmittel und kostet nix face-wink

Gruss
Tsuki
Mitglied: RhoLeonis
RhoLeonis 25.11.2009 um 08:53:27 Uhr
Goto Top
Hey... zunächst danke für die Hinweise.

Ich habe soweit einen Ansatz gefunden. Über den Windows-Aufgabenplaner kann ich mir täglich eine Mail zusenden lassen. Damit könnte ich auch einen Anhang verschicken, also z.B. die Tabelle. Die Idee, mit VB täglich die Tabelle zu filtern und dann die gefilterte Version zu versenden, hatte ich auch schon. Das Problem ist, dass ich in VB nicht so wirklich fit bin. Gibt es dazu vorgefertigte Scripts?!

Danke und Gruß zurück!! face-smile
Mitglied: TsukiSan
TsukiSan 26.11.2009 um 02:45:08 Uhr
Goto Top
hi RhoLeonis,

Du musst den Pfad und den Dateinamen der Excel-Datei anpassen, die Spalte, wo die Geburtstage stehen anpassen
und du weißt genau, wo die Namen stehen, in welcher Spalte.
in VBS sieht das zum Beispiel dann so aus:
Dim MyPfad
Dim Zeile
Dim GebDatum(1000)

MyPfad = "C:\Geburtstags.xls"  
Zeile = 1

Set objXLS = WScript.CreateObject("Excel.Application")  
objXLS.Workbooks.Open MyPfad
objXLS.Visible = False

for i = 1 to 1000
	Zeile = i
	GebDatum(i) = OBJXLS.Range("A" & Zeile).Text  
	If mid(GebDatum(i),1,5)  = mid(Date,1,5) then
		 'Anweisung  
	End If
next

objXLS.Quit

Set objXLS = nothing
in diesem Schnipsel wird die Reihe "A" von den Zeilen 1 bis 1000 in ein Array (GebDatum) eingelesen und mit dem aktuellen Datum verglichen. In meinem Beispiel gehe ich davon aus, dass dein Datumsformat TT.MM.JJJJ ist, dass heisst es werden nur TT.MM. miteinander verglichen. Das macht die "Mid-Funktion".

Wenn du Lust hast, dir was in VBS zu programmieren und noch Fragen hast, dann poste weiter.

Gruss
Tsuki
Mitglied: RhoLeonis
RhoLeonis 26.11.2009 um 11:30:09 Uhr
Goto Top
Hi Tsuki...

vielen Dank für das Script. Ich habe das mal ausprobiert, aber irgendwie läuft es noch nicht rund. Da ich VBS-DAU bin, kann es aber sein, dass ich was übersehen habe. Also hier ganz genau die Schritte, die ich gemacht habe:
- neue Textdatei erstellt, als test.vbs umbenannt und den Quelltext hineinkopiert
- Pfad, Dateiname und Spaltennamen angepasst
- Doppelklick auf test.vbs und es passiert scheinbar gar nix

Für mich stellt sich zunächst die Frage, wo das Ergebnis ausgegeben werden soll. In der ursprünglichen Tabelle oder in einer neuen?

Bin gerne bereit, mehr in VBS zu machen. Daher wäre das ein schöner Einstieg. Also wäre ich für weitere Hilfen dankbar... face-smile

Gruß
Rho Leonis
Mitglied: nube-li
nube-li 26.11.2009 um 13:35:57 Uhr
Goto Top
Hi

Gib mal statt ' Anweisung "MsgBox("Jemand hat Geburtstag") ein
sprich:

If mid(GebDatum(i),1,5)  = mid(Date,1,5) then 
   MsgBox("jemand hat Geburtstag")  
else
   MsgBox("niemand hat geburtstag")  
End If

face-smile Anweisung ist, was das Script machen soll wenn jemand Geburtstag hat

Gruss
Mitglied: TsukiSan
TsukiSan 27.11.2009 um 14:32:02 Uhr
Goto Top
@RhoLeonis,

wie nube-li schon geschrieben hat fügst du in Zeile 16 meines Scriptes seine Zeilen ein.
'Anweisung  
it auskommentiert und an dieser Stelle kannst du eintragen, welche Aktionen in deinem Script dann ausgeführt werden sollen.
Das kann eine Messagebox üblicherweise sein.
Ich habe mein Beispielscript mal etwas angepasst. Du musst dann nochmals deine Änderungen übernehmen!
Dim MyPfad
Dim Zeile
Dim GebDatum(20)
Dim GebNamen(20)

MyPfad = "C:\Geburtstags.xls"  
Zeile = 1

Set objXLS = WScript.CreateObject("Excel.Application")  
objXLS.Workbooks.Open MyPfad
objXLS.Visible = False

GebNamen(1) = "Leider niemand :-("  
for i = 1 to 20
	Zeile = i
	GebDatum(i) = OBJXLS.Range("A" & Zeile).Text  
	If mid(GebDatum(i),1,5)  = mid(Date,1,5) then
		GebNamen(1) = ""  
		GebNamen(i) = OBJXLS.Range("B" & Zeile).Text & vbCrLf  
	End If
next

Ausgabe = "Heute Haben Geburtstag:" & vbCrLf & "*********************" & vbCrLf & Join(GebNamen,"")  

wscript.Echo Ausgabe

objXLS.Quit
Set objXLS = nothing

Gruss
Tsuki
Mitglied: RhoLeonis
RhoLeonis 30.11.2009 um 08:04:17 Uhr
Goto Top
Ich bin begeistert. Das funktioniert so schon wunderbar und prinzipiell genau so, wie ich es gerne hätte... face-smile

Also erstmal herzlichen Dank!!

Perfekt wäre es, wenn die Ausgabe in irgendeiner Form per E-Mail versendet werden könnte. Also die Ausgabe entweder direkt in eine neue E-Mail oder in eine Datei, die dann versendet wird. Wenn das funktionieren sollte, wäre es perfekt. Wenn nicht, bin ich aber auch so schon sehr zufrieden... face-smile
Mitglied: TsukiSan
TsukiSan 30.11.2009 um 14:13:22 Uhr
Goto Top
also, du deklarierst am Anfang folgende Zeilen:
    Set myOutlock = CreateObject("Outlook.Application")  
    Set item = myOutlock.CreateItem(0)
    With item
        .Subject = "Geburtstage"  
        .To = "MeineAdresse@Email.de"  
    End With

dann fügst du in deiner Abfrage, ob jemand heute Geburtstag hat folgenden Code ein:
With item
        .Body = .Body & GebNamen(i)
End With

und ganz ziemlich "unten", wenn dein Programm alle Daten aus deiner ExcelDatei ausgelesen hat, noch folgendes:
Item.Send

Dann öffnen dein Outlook (Standart Outlook!) und schaue dir deinen Postausgang an.

Gruss
Tsuki
Mitglied: RhoLeonis
RhoLeonis 01.12.2009 um 15:28:44 Uhr
Goto Top
Vielen Dank nochmal. Das hat mir sehr weitergeholfen.... face-smile