2.5k Aufrufe
Gefragt in Tabellenkalkulation von noldi Mitglied (477 Punkte)
Hallo zusammen

Ich habe mal eine frage.

Ist es möglich ein Arbeitsblatt aus Excel heraus immer zu einen
bestimmten Zeitpunkt zu senden? (immer Freitag 10.00h)
Dabei ändert sich pro Woche immer das Tabellenblatt ( Woche1,
Woche2, Woche3 unsw.)
Ist so was machbar?
Ich verwende Outlook 2000.

Danke

Gruß Noldi

3 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

hast du feste Adressen an die die Mails gehen?

Gruß

Helmut
0 Punkte
Beantwortet von noldi Mitglied (477 Punkte)
Hallo Helmut, hallo an alle

Ja ich habe einen Verteiler in Outlook wo ich die ganzen Adressen
hinterlegt habe.
Die Adressen sollen in Outlook in BBC stehen.

Danke Euch

Gruß Noldi
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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]
...