Hallo Noldi!
Mit nachfolgenden VBA-Codes sollte es funktionieren.
Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.
Option Explicit
'!!!Achtung!!!
'Unter "Extras => Vereise" muss der Verweis "Microsoft Outlook xx.x Object Library" _
aktiviert werden!
Public varIntervall As Variant
Sub Prüfung_start()
'Vorgabe, wie oft Prüfung durchgeführt werden soll. Hier jeder Stunde
varIntervall = Now + TimeValue("01:00:00")
'Wenn Wochentag 6 für Freitag (Woche fängt am Sonntag mit 1 an) _
und Uhrzeit 10:00 Uhr, dann das Makro "Automail_über_Outlook_senden" _
ausführen
If Weekday(Now) = 6 And Format(Time, "hh:mm") = "10:00" Then _
Call Automail_über_Outlook_senden
'Makro "Prüfung_start" neu starten
Application.OnTime varIntervall, "Prüfung_start"
End Sub
Sub Prüfung_stop()
On Error Resume Next
'Beendet das Zeitmakro
Application.OnTime EarliestTime:=varIntervall, Procedure:="Prüfung_start", Schedule:=False
End Sub
Sub Automail_über_Outlook_senden()
Dim objOutApp As Object
Dim ObjMailNachricht As Object
Dim objMailAddressList As Outlook.AddressList
Dim objMailAddresse As Outlook.AddressEntry
Dim strListeMailadressen As String
Dim strPfadUndDatei As String
On Error GoTo Errorhandler
Application.ScreenUpdating = False
'Pfad, wohin die Datei gespeichert werden soll. Pfad und Dateiname _
muss angepasst werden
strPfadUndDatei = "C:\Temp\Test.xls"
Set objOutApp = CreateObject("Outlook.Application")
Set ObjMailNachricht = objOutApp.CreateItem(0)
'Hier bitte das Wort "Kontakte" ändern, sofern der Kontaktordner _
einen anderen Namen hat
Set objMailAddressList = objOutApp.Session.AddressLists("Kontakte")
'Blatt in neue Datei kopieren
ActiveWorkbook.Sheets("Tabelle1").Copy
'Neue Datei speichern
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=strPfadUndDatei
'Neue Datei schließen
ActiveWindow.Close
Application.DisplayAlerts = True
'Kontakte auslesen und in Variable schreiben
For Each objMailAddresse In objMailAddressList.AddressEntries
strListeMailadressen = strListeMailadressen & ";" & objMailAddresse.Address
Next objMailAddresse
'Nachricht in Outlook erzeugen
With ObjMailNachricht
'Empfänger "An"
.To = strListeMailadressen
'Empfänger "Cc"
'.CC = strListeMailadressen
'Betrefftext
.Subject = "Hier Text für Betreffzeile eingeben"
'Nachrichtentext
.Body = "Hier einen Nachrichtentext eingeben"
'Anhang
.Attachments.Add strPfadUndDatei
'Hier wird die Mail zuerst angezeigt
.display
'Hier wird die Mail gleich in den Postausgang gelegt
'.Send
End With
Errorhandler:
Application.DisplayAlerts = True
Set objOutApp = Nothing
Set ObjMailNachricht = Nothing
Set objMailAddressList = Nothing
End Subb
Kopiere nachfolgenden Code in das VBA-Projekt "DieseArbeitsmappe".
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Prüfung_stop
End Sub
Private Sub Workbook_Open()
Call Prüfung_start
End Subb
Durch diese VBA-Code wird beim Öffnen der Datei das Makro "Prüfung_start" ausgeführt. Das bewirkt, dass jede Stunde das Makro "Prüfung_start"ausgeführt wird. In diesem Makro wird geprüft, ob der Wochentag ein Freitag und die Uhrzeit 10:00 Uhr ist. Wenn ja, wird das Makro "Automail_über_Outlook_senden" ausgeführt.
In dem Makro "Automail_über_Outlook_senden" wird zunächst das Tabellenblatt "Tabelle1" in eine neue Datei kopiert, gespeichert und geschlossen. Danach wird der Outlook-Kontaktordner ausgelesen und es wird eine Mail erzeugt, die in der Empfängerzeile alle ausgelesenen Kontakte aufführt und die Datei angehängt hat.
In dem Makro wird durch die Methode ".display" die Nachricht angezeigt. Wenn man das nicht möchte, die Methode durch ein Hochkomma ( ' ) auskommentieren und das Hochkomma vor der Methode ".Send" löschen. Dann wird die Mail sofort in den Postausgang gelegt.
Achte in dem Makro auf die grünen Text, da es sich dabei um Erklärungen des Makro handelt.
Außerdem Musst Du in der VBA-Umgebung unter "Extras => Verweise" den Verweis "Microsoft Outlook xx.x Object Library" aktivieren, damit der VBA-Code funktioniert.
Du kannst Dir bei Bedarf auch meine für mich erstellte Beispieldatei unter
http://www.excelbeispiele.de/beispiele_supportnet/Mail_zu_festgelegter_Zeit_erzeugen.xls herunterladen.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf
meiner HP in der
Rubrik Anleitungen und dort dann in der
Anleitungsnummer 1 und 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
Bei Fragen melde Dich.
MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]