Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mail aus Excel heraus automatisch versenden

Mail aus Excel heraus automatisch versenden
18.06.2007 12:01:57
René
Hallo Ihr Excel/VBA-Guru's da draussen.
Ich habe mal wieder ein Problem. Ich möchte aus meiner Excel ToDo-Liste bei überschreiten eines Datumwertes automatisch eine Info Mail senden mit dem Inhalte der Beschreibung des jeweiligen ToDo's. Wie um alles in der welt funktioniert das? Ich verbringe hier schon Tage mit Recherchen und komme einfach nicht weiter. Bitte helft mir!
Zum besseren Verständnis habe ich die Datei hochgeladen unter:
https://www.herber.de/bbs/user/43342.xls
Danke im Voraus, René.

Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mail aus Excel heraus automatisch versenden
18.06.2007 13:51:00
Renee
Mazwara René,
Statt Deinem Makro, probier mal dieses.

Sub auto_open()
Dim rCell As Range
Dim objApp As Object
Dim objMailItm As Object
Dim tBRng As String
Dim tReceiver As String
tBRng = "A11:A" & Sheets("ToDo").UsedRange.Rows.Count
tReceiver = Sheets("ToDo").Range("B4")
'    Set objApp = CreateObject("Outlook.Application")
For Each rCell In Sheets("ToDo").Range(tBRng)
If IsDate(rCell.Offset(0, 5).Value) Then
If rCell.Offset(0, 5) - Date " & vbCrLf & _
"wird am " & rCell.Offset(0, 5).Value & " fällig!"
.Send
End With
rCell.Offset(0, 9).Value = True
Set objMailItm = Nothing
End If
End If
Next
Set objApp = Nothing
End Sub


Es läuft automatisch beim öffnen des WB.
Es prüft auf die Zeitdifferenz in A3, nimmt den Empfänger aus B4 und merkt sich in der Spalte J, ob schon einmal ein E-Mail versandt wurde.
Greetzz Renee

Anzeige
AW: Mail aus Excel heraus automatisch versenden
18.06.2007 13:54:00
Renee
oops,
da ist noch ein Testfehler drin.
Remove das Hochkomma vor:

Set objApp = CreateObject("Outlook.Application")


Sorry Renee

AW: Mail aus Excel heraus automatisch versenden
18.06.2007 14:05:00
René
Ich habe dein Makro kopiert, aber nichts passiert. Ich lade nochmal die neue Datei hoch. Kannst du mal schauen ob ich irgendetwas grundsätzliches falsch mache? Vielleicht auch mit ein paar Beschreibungen?
https://www.herber.de/bbs/user/43349.xls
Ansonsten hört sich deine Beschreibung richtig gut an.
Grüße René

Anzeige
AW: Mail aus Excel heraus automatisch versenden
18.06.2007 14:16:34
Renee
Hello Rene,
Das Makro gehört in DieseArbeitsmappe !
Greetz Renee

AW: Mail aus Excel heraus automatisch versenden
18.06.2007 15:11:00
René
Ok, das hab ich jetzt kapiert. Das Makro startet aber nicht selbstständig beim öffnen der Arbeitsmappe. Nach manuellen Start kam vom Outlook die Meldung:
"Eine Anwendung versucht, automatisch Nachrichten in Ihrem Auftrag zu senden. Möchten Sie dies zulassen?" Erst nach positiver Bestätigung wird eine Mail versandt. Kann man diese Abfrage umgehen und ohne Bestätigung die Mail versenden?
Bitte seht mir meine Unkenntnis nach. Ich bin vollkommen neu in VBA.
Grüße René

Anzeige
AW: Mail aus Excel heraus automatisch versenden
18.06.2007 15:20:00
Renee
Mazwara René,
Schreibe statt Sub auto_open() das hier: Private Sub Workbook_Open(), dann startet es automatisch. Das mit der Outlook-Meldung kann man nur mit 3rd-Party Programmen oder komplizierterem Code umgehen. Das ist eine Sicherheitsfeature von Outlook.
Greetz Renee

Anzeige
AW: Mail aus Excel heraus automatisch versenden
18.06.2007 15:33:58
René
Funktioniert Super. Kann man Das Makro so umwandeln das die Überprüfung der Termine fortwährend vorgenommen werden? Das Excel-Tool soll ständig laufen d.h. es wird nur selten ausgeschaltet und wieder geöffnet. Jetzt steht das Problem das das Makro nur beim Öffnen des WB gestartet wird.
Danke für all deine Bemühungen. Grüße

Anzeige
AW: Mail aus Excel heraus automatisch versenden
18.06.2007 16:03:00
Renee
Mazwara René,
Das wird komplizierter. Folgender Code testet/sendet Mails 1 mal pro Stunde.
Kopiere den Code, wie dokumentiert (lösche vorher den alten Code), also oberer Teil in DieseArbeitsmappe und unterer Teil in ein Modul

' This code belongs to ThisWorkbook
' Press Alt-F11
' Select ThisWorkbook from the project-explorer
' and copy the code below into the empty window
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
stopWatch
End Sub
Private Sub Workbook_Open()
dNextRun = Now()
checkAlert
End Sub
' This code belongs to a module
' Press Alt-F11
' Rightclick on the project in the project-explorer
' Select Insert Module and copy the code below into the empty window
Option Explicit
Public dNextRun As Double
Sub stopWatch()
On Error Resume Next
Application.OnTime dNextRun, "watchAlert", schedule:=False
dNextRun = 0
End Sub
Sub watchAlert()
If dNextRun = 0 Then Exit Sub
dNextRun = Now + TimeSerial(1, 0, 0)
Call checkAlert
Application.OnTime dNextRun, "watchAlert", schedule:=True
End Sub
Sub checkAlert()
Dim rCell As Range
Dim objApp As Object
Dim objMailItm As Object
Dim tBRng As String
Dim tReceiver As String
tBRng = "A11:A" & Sheets("ToDo").UsedRange.Rows.Count
tReceiver = Sheets("ToDo").Range("B4")
Set objApp = CreateObject("Outlook.Application")
For Each rCell In Sheets("ToDo").Range(tBRng)
If IsDate(rCell.Offset(0, 5).Value) Then
If rCell.Offset(0, 5) - Date " & vbCrLf & _
"wird am " & rCell.Offset(0, 5).Value & " fällig!"
.Send
End With
rCell.Offset(0, 9).Value = True
Set objMailItm = Nothing
End If
End If
Next
Set objApp = Nothing
End Sub


Zum testen, kannst du diese Zeile:


dNextRun = Now + TimeSerial(1, 0, 0)
ersetzen durch:
dNextRun = Now + TimeSerial(0, 1, 0)


Damit wird jede Minute getestet, statt jede Stunde.
Greetz Renee

Anzeige
AW: Mail aus Excel heraus automatisch versenden
18.06.2007 16:02:16
René
Hallo
hier noch ein paar Fragen. Ich hoffe ich nerve noch nicht zu sehr.
Kann ich auch an mehrere Leute die Mails versenden? Wenn ja wie.
Kann ich auch individuell den einzelnen ToDo's zugeordnete Fristen auslesen lassen und die Mails dann darauf hin automatisch versenden. siehe Tabelle.

Die Datei https://www.herber.de/bbs/user/43355.xls wurde aus Datenschutzgründen gelöscht


Und kann ich meine Standard Outlook Mail-Signatur in die Mail einbeziehen.
Viele Fragen, ich weiß. Aber die sich ergebenden Möglichkeiten fazinieren mich einfach.
Grüße René

Anzeige
AW: Mail aus Excel heraus automatisch versenden
18.06.2007 16:22:00
Renee
Hello René,
Man kann viel, wenn man genug Zeit hat, aber die hab ich nicht.
Also in Kürze:
an mehrere Leute die Mails versenden : In die Zelle address1@mail.com; address2@mail.com etc. schreiben.
individuell den einzelnen ToDo's zugeordnete Fristen : Mach eine neue Kolonne (z.B. K) in der Du die Tagesgrenze einträgst, dann ersetze:

If rCell.Offset(0, 5) - Date 


wobei die 10 die 10te Spalte also K bezeichnet.
Standard Outlook Mail-Signatur ist vielleicht möglich, aber ich weiss nicht wie.
Greetz Renee

Anzeige
AW: Mail aus Excel heraus automatisch versenden
18.06.2007 16:29:34
René
Ich danke dir für die Zeit die du dir genommen hast.
Ich habe das neue Makro in die Arbeitsmappe und in ein Modul kopiert aber nichts passiert.
https://www.herber.de/bbs/user/43357.xls
Das ist wirklich meine letzte Frage!!!
Danke, Danke, Danke!

Anzeige
AW: Mail aus Excel heraus automatisch versenden
18.06.2007 16:44:53
Renee
Sorry keine Idee.
Bei mir läuft das problemlos.
Greetz Renee

AW: Mail aus Excel heraus automatisch versenden
19.06.2007 10:39:37
René
Ich danke dir für deine Hilfe. Ich probier einfach noch ein bischen rum. Vielleicht schaffe ich es ja doch noch. Also vielen Dank nochmal.
Grüße René
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Automatisches Versenden von E-Mails aus Excel


Schritt-für-Schritt-Anleitung

Um aus Excel heraus automatisch E-Mails zu versenden, benötigst du ein VBA-Makro. Hier ist ein einfaches Beispiel, das du in deine Excel-Arbeitsmappe einfügen kannst:

  1. Öffne Excel und drücke Alt + F11, um den VBA-Editor zu öffnen.
  2. Klicke im Projekt-Explorer mit der rechten Maustaste auf DieseArbeitsmappe und wähle Code anzeigen.
  3. Füge folgenden Code ein:
Private Sub Workbook_Open()
    checkAlert
End Sub

Sub checkAlert()
    Dim rCell As Range
    Dim objApp As Object
    Dim tBRng As String
    Dim tReceiver As String
    tBRng = "A11:A" & Sheets("ToDo").UsedRange.Rows.Count
    tReceiver = Sheets("ToDo").Range("B4")

    Set objApp = CreateObject("Outlook.Application")
    For Each rCell In Sheets("ToDo").Range(tBRng)
        If IsDate(rCell.Offset(0, 5).Value) Then
            If rCell.Offset(0, 5).Value <= Date Then
                Dim objMailItm As Object
                Set objMailItm = objApp.CreateItem(0)
                With objMailItm
                    .To = tReceiver
                    .Subject = "Erinnerung: ToDo fällig"
                    .Body = "Das ToDo '" & rCell.Offset(0, 1).Value & "' wird am " & rCell.Offset(0, 5).Value & " fällig!"
                    .Send
                End With
                rCell.Offset(0, 9).Value = True ' Markiert, dass die E-Mail gesendet wurde
            End If
        End If
    Next rCell

    Set objApp = Nothing
End Sub
  1. Schließe den VBA-Editor und speichere die Arbeitsmappe als xlsm-Datei.

Das Makro wird beim Öffnen der Datei ausgeführt und sendet eine E-Mail, wenn das Datum in der entsprechenden Zelle erreicht wird.


Häufige Fehler und Lösungen

  • E-Mail wird nicht gesendet: Stelle sicher, dass Outlook korrekt konfiguriert ist und dass du die richtige E-Mail-Adresse in Zelle B4 eingegeben hast.
  • Fehlende Berechtigung: Wenn beim Senden der E-Mail eine Sicherheitswarnung erscheint, kannst du diese nur mit Drittanbieter-Software umgehen.
  • Makro läuft nicht: Vergewissere dich, dass der Code im richtigen Modul (DieseArbeitsmappe) eingefügt wurde.

Alternative Methoden

Falls du nach einer anderen Möglichkeit suchst, um E-Mails automatisch aus Excel zu versenden, kannst du auch:

  • Power Automate verwenden: Erstelle einen Flow, der auf Änderungen in einer Excel-Datei reagiert.
  • Makros in Google Sheets: Nutze Google Apps Script, um E-Mails direkt aus Google Sheets zu versenden.

Praktische Beispiele

  1. E-Mail an mehrere Empfänger: Trage mehrere E-Mail-Adressen in Zelle B4 ein, getrennt durch Semikolons:

    .To = "address1@mail.com; address2@mail.com"
  2. Individuelle Fristen: Füge eine neue Spalte (z.B. K) hinzu, um individuelle Fristen für jedes ToDo festzulegen. Ändere den Code entsprechend:

    If rCell.Offset(0, 10).Value <= Date Then
  3. Signatur einfügen: Um die Outlook-Signatur einzufügen, kannst du die Signatur in eine Textvariable speichern und im E-Mail-Body verwenden.


Tipps für Profis

  • Verwende Application.OnTime, um das Makro regelmäßig auszuführen, z.B. jede Stunde.
  • Achte darauf, dass das Excel-Tool nur selten ausgeschaltet wird, um kontinuierlich E-Mails zu versenden.
  • Optimiere den Code, um nur E-Mails zu versenden, wenn der Wert in A3 erreicht ist.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die E-Mail nur gesendet wird, wenn ein bestimmter Wert erreicht ist? Du kannst die Bedingung im Code anpassen, um nur zu senden, wenn der Wert in einer bestimmten Zelle erreicht wird.

2. Kann ich das E-Mail-Versenden automatisieren, sodass es nicht nur beim Öffnen der Datei geschieht? Ja, du kannst Application.OnTime verwenden, um das Makro regelmäßig auszuführen.

3. Wie füge ich meine Outlook-Signatur in die E-Mail ein? Das Einfügen der Signatur erfordert einen zusätzlichen Code, um die Signatur aus Outlook abzurufen.

4. Funktioniert das in allen Excel-Versionen? Das VBA-Makro ist in den meisten modernen Excel-Versionen kompatibel, aber du solltest sicherstellen, dass deine Version die Verwendung von VBA unterstützt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige