Hallo Patrick,
Der zweite parameter von Weekday gibt an welcher Tag der erste
Tag der Woche ist.
Wenn ich das der Hilfe richtig entnehme brauche ich ja nur
vbFriday angeben damit dann jeden Freitag die Mail versendet
wird. Richtig? Oder ist es so angelegt, dass der Versand jeden
Tag erfolgt?
nein, laß da ruhig vbMonday stehen, damit wird festgelegt, daß der erste tag der Woche ein Montag ist, ergo ist dann der 5te tag der Freitag, diese 5 wird dann abgefragt.
Wenn es dir Spass macht dich zu verwirren, kannst du auch vbThuesday eintragen und dann die 7 abprüfen 
So schlau,
dass Feiertage erkannt werden und der Versand dann entweder
Montag oder Donnerstag erfolgt ist VB bestimmt nicht oder?
Du mußt dem Code nur sagen an welchen Tagen die Feiertage sind, er weiß ja nicht ob er in Bayern oder in Hessen läuft.
Sicher, fast alle Feiertage kann man auch per Vba berechnen lassen, viele sind von Ostern abhängig und einige von Weihnachten.
Aber das finde ich hier zu aufwendig.
Nimm einen jahreskalender und schreibe dir die Donnerstage heraus o Freitags Feiertag ist, ggfs. den Mittwoch, wenn Do und Fr Feiertag sind.
Diese Datümer schreibst du dann in der Form „tt.mm.jj“ ins Modul1 in den Code der Funktion „IstSendetag“ in der zeile:
Tage = Array(„24.12.08“, „20.10.08“)
Anschließende stellst du den Curser in die Prozedur „KnopfErstellen“ und drückst F5. Dies brauchst du nur einmalig zu tun. Danach hast du oben in der Menuleiste rechts vom Fragezeichen ein neues Symbol, was dich aber nicht zu stören braucht, kannst eh nix mit machen *gg*
Der Code braucht das um dort Daten zu speichern.
Dadurch entfällt das Schreiben und Lesen der Txt-Datei.
Sub Senden()
Dim oTask As Outlook.TaskItem
Dim oMail As Outlook.MailItem
Dim oFld As Outlook.MAPIFolder
Const TEMPLATE\_SUBJECT As String = "Daily Mail"
Const TEMPLATE\_ADR As String = "[email protected]"
Dim Txt As String
Txt = "Hallo Herr XXX," + vbCrLf + vbCrLf
Txt = Txt + "bitte teilen Sie uns die Anzahl der Leergut-Paletten die am Montag zu holen sind mit." + vbCrLf + vbCrLf
Txt = Txt & "Vielen Dank" + vbCrLf + vbCrLf + vbCrLf
Txt = Txt & "Mit freundlichen Grüßen" + vbCrLf + vbCrLf
Txt = Txt & "XXX" + vbCrLf
Txt = Txt & "\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_" + vbCrLf + vbCrLf
Txt = Txt & "C & L Service GmbH" + vbCrLf
Txt = Txt & "XXX" + vbCrLf
Txt = Txt & "XXX" + vbCrLf
Txt = Txt & "Telefon: +49 XXX" + vbCrLf
Txt = Txt & "Telefax: +49 XXX" + vbCrLf
Txt = Txt & "E -Mail: [email protected]" + vbCrLf
Txt = Txt & "Internet: http://www.XXX.de" + vbCrLf
Txt = Txt & "\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_" + vbCrLf + vbCrLf
Txt = Txt & "Geschäftsführer XXX" + vbCrLf
Txt = Txt & "Amtsgericht XXX" + vbCrLf
Txt = Txt & "Handelsregisterbuch XXX" + vbCrLf
Txt = Txt & "Ust-Id-Nr. XXX" + vbCrLf
Txt = Txt & "Steuer-Nr. XXX"
Set oMail = Application.CreateItem(olMailItem)
oMail.Subject = TEMPLATE\_SUBJECT
oMail.Body = Txt
oMail.Recipients.Add TEMPLATE\_ADR
oMail.Send
End Sub
'
Function SchonGesendet() As Boolean
If Weekday(Date, vbMonday) 5 Then
SchonGesendet = True
Exit Function
End If
With Application.ActiveExplorer.CommandBars("Menu Bar")
If .Controls("Datum").OnAction = Format(Date, "yyyymmdd") Then SchonGesendet = True
End With
End Function
'
Function IstSendetag()
Dim Tage, N, Vorh As Boolean
Tage = Array("24.12.08", "20.10.08")
IstSendetag = False
For N = 0 To UBound(Tage)
If Tage(N) = Format(Date, "dd.mm.yy") Then
IstSendetag = True
Exit For
End If
Next N
End Function
'
Sub KnopfErstellen()
Dim Knopf, Vorh As Boolean
With Application.ActiveExplorer.CommandBars("Menu Bar")
For Each Knopf In .Controls
If Knopf.Caption = "Datum\*" Then
Vorh = True
Exit For
End If
Next Knopf
If Vorh = False Then
Set Knopf = .Controls.Add(Type:=msoControlButton)
With Knopf
.Caption = "Datum"
.Enabled = False
.OnAction = ""
End With
End If
End With
End Sub
In „DieseOutlooksitzung“ änderst du den Code wie folgt ab:
Private Sub Application\_Startup()
If SchonGesendet = True And IstSendetag = False Then Exit Sub
Call Senden
With Application.ActiveExplorer.CommandBars("Menu Bar")
.Controls("Datum").OnAction = Format(Date, "yyyymmdd")
End With
End Sub
Gruß
Reinhard