Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: EMail versenden / Empfänger in bestimmten Zellen

EMail versenden / Empfänger in bestimmten Zellen
20.02.2013 09:22:10
Toumas
Hallo zusammen,
ich hatte gestern die Frage unter :
https://www.herber.de/forum/archiv/1300to1304/t1300012.htm
bereits eingestellt.
Mittlerweile habe ich im Netz noch was gefunden und wollte das Makro entsprechend anpassen. Leider nimmt er mir immer wieder nur die erste Zeile für die EMail und fügt die restlichen Zeilen nicht ein. Auch versendet er mir die EMail nicht sofort, sondern macht erst Outlook auf und zeigt mir die Mail an, damit ich diese bestätigen muss. (ich hab auch schon das ' vor dem .send entfernt... aber da verschickt er mir auch keine sofort.)
Da ich, wie gesagt keinen Plan habe von VBA wäre ich für einen Tipp sehr dankbar.
Vielen Dank
Toumas
Sub MailVersenden()
Dim obNachricht As Object
Dim obMail As Object
Dim lngZeile As Long
Dim strBCC As String
' erste Adresse für BCC aus Zelle M9
strBCC = Cells(9, 13)
' in einer Schleife alle Adressen aus Spalte M ab Zeile 2 zu einem String zusammenfassen
For lngZeile = 2 To IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row,  _
Rows.Count)
strBCC = strBCC & "; " & Cells(lngZeile, 1)
Next lngZeile
Set obMail = CreateObject("Outlook.Application")
Set obNachricht = obMail.CreateItem(0)
With obNachricht
.To = strBCC     ' "Meine@Adresse.de"    '

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: EMail versenden / Empfänger in bestimmten Zellen
20.02.2013 09:57:44
Toumas
Meine Idee, dass ich mit : .Recipients.Add strBCC
arbeite und je Zeile ein strBCC (1-29) einfüge
ist auch nicht erfolgreich gewesen, sobald das Makro auf eine leere Zeile stößt bringt es die Fehlermeldung, dass eine Adresse usw. im Empfänger stehen muss.....

AW: EMail versenden / Empfänger in bestimmten Zellen
20.02.2013 10:16:15
Klaus
Hi,
ich hab mir deinen Code nicht im Detail angeschaut. Aber die Aussage
sobald das Makro auf eine leere Zeile stößt
lässt mich denken, dass kannst du einfach mit einem IF umgehen.
also, IF not isemtpy(cell) Then "ein strBCC (1-29) einfügen"
Ich meine, in deinem Code ist das diese Zeile:
strBCC = strBCC & "; " & Cells(lngZeile, 1)
Die könnte man dan ändern in
IF isempty(Cells(lngZeile, 1)) then
'do nothing
else
strBCC = strBCC & "; " & Cells(lngZeile, 1)
end if

oder kürzer
if not isempty(Cells(lngZeile, 1)) then strBCC = strBCC & "; " & Cells(lngZeile, 1)
Grüße,
Klaus M.vdT.

Anzeige
AW: EMail versenden / Empfänger in bestimmten Zellen
20.02.2013 10:45:33
Toumas
Hallo Klaus,
erst mal Danke für deine Antwort, aber irgendwie scheint das auch nicht zu funktionieren (denk daran, ich bin ein VBA-Dau *g*)
Ich habe mittlerweile den Code so umgeschrieben, aber hier passiert es immer noch, dass die Leerzeile als Fehler aufgeführt wird.
Die strBCC(x) würde ich dann bis zur Zelle M38 weiter aufführen.... sieht zwar bescheiden aus, aber scheint, bis auf die Zeile, in der keine Mailadresse steht und der automatische Versand zu funktionieren.
Grüße
Toumas
Sub Mailversenden666()
Dim strBetreff As String
Dim strBCC As String
Dim strInhalt As String
Dim strPfadAnhang As String
Dim zeile As Integer
zeile = ActiveCell.Row
' strBetreff = Range("H" & zeile).Value
strBetreff = Worksheets("Übersicht Telefonbereitschaft").Range("B48:B48 ").Value
' strEMail = Range("I" & zeile).Value
strBCC = Worksheets("Übersicht Telefonbereitschaft").Range("M9:M9").Value
strBCC1 = Worksheets("Übersicht Telefonbereitschaft").Range("M10:M10").Value
strBCC2 = Worksheets("Übersicht Telefonbereitschaft").Range("M11:M11").Value
strBCC3 = Worksheets("Übersicht Telefonbereitschaft").Range("M12:M12").Value
Set obMail = CreateObject("Outlook.Application")
Set obNachricht = obMail.CreateItem(0)
With obNachricht
' .To = strBCC     ' "Meine@Adresse.de"    '

Anzeige
AW: EMail versenden / Empfänger in bestimmten Zellen
20.02.2013 10:57:14
Klaus
Hi,
Vermutung: die leeren Zellen sind nicht wirklich leer.
Beispiel:
Steht in Zelle A1 nichts, dann ist sie leer.
Steht in Zelle A1 die Formel =WENN(Weltuntergang=True;"Panik";"") und es ist gerade kein Weltuntergang, dann steht in A1 zwar nichts sichtbares (""), aber A1 ist eben nicht leer sondern enthält eine Formel die einen leeren String erzeugt.
Ich hab das Makro mal umgestrickt, so dass es
- auf leer prüft
- auf "" prüft
- den Bereich in einer Schleife prüft
Option Explicit
Sub Mailversenden666()
Dim strBetreff As String
Dim strBCC As String
Dim strInhalt As String
Dim strPfadAnhang As String
Dim zeile As Integer
Dim rAdressen As Range
zeile = ActiveCell.Row
' strBetreff = Range("H" & zeile).Value
strBetreff = Worksheets("Übersicht Telefonbereitschaft").Range("B48:B48 ").Value
' strEMail = Range("I" & zeile).Value
'strBCC = Worksheets("Übersicht Telefonbereitschaft").Range("M9:M9").Value
'strBCC1 = Worksheets("Übersicht Telefonbereitschaft").Range("M10:M10").Value
'strBCC2 = Worksheets("Übersicht Telefonbereitschaft").Range("M11:M11").Value
'strBCC3 = Worksheets("Übersicht Telefonbereitschaft").Range("M12:M12").Value
Set obMail = CreateObject("Outlook.Application")
Set obNachricht = obMail.CreateItem(0)
With obNachricht
' .To = strBCC     ' "Meine@Adresse.de"    '

Anzeige
AW: EMail versenden / Empfänger in bestimmten Zellen
20.02.2013 11:11:01
Toumas
Hallo,
danke für die schnelle Antwort.
und ja stimmt, die Mailadresse hole ich mir ja mit einem SVerweis, da steht dann also die Formel in der Zeile, also nicht leer, sonder keine Mailadresse....
bei
Set obMail = CreateObject("Outlook.Application")
kommt nach dem Start : Fehler beim Kompilieren, Variable nicht definiert

Anzeige
AW: EMail versenden / Empfänger in bestimmten Zellen
20.02.2013 11:25:02
Toumas
Nachtrag
Wenn ich : Option Explicit
entferne
erscheint die Fehlermeldung Sub oder Funtion nicht definiert bei : If Not isemtpy(rAdressen) Then

AW: EMail versenden / Empfänger in bestimmten Zellen
20.02.2013 11:31:55
Toumas
ist noch offen... habe nur das Kästchen nicht makiert

AW: EMail versenden / Empfänger in bestimmten Zellen
20.02.2013 11:39:46
Klaus
Hi,
die Fehlermeldung bei
Set obMail = CreateObject("Outlook.Application")
ist dein Bier, daran hab ich nicht geschraubt. Kannst ja Option Explicit einfach weglassen. Du kannst dir aber auch Gedanken darüber machen, warum dein Code nicht sauber durch-dimensioniert ist ... ich nehme aber an, du hast den Mail-Code nicht selber geschrieben. Ich kann da leider nicht helfen, da das ganze Outlook-Anbinden und API-Nutzen nicht meine Welt ist.
If Not isemtpy(rAdressen) Then
sollte allerdings funktionieren, da IsEmpty eine Vba-Funktionalität ist. Probier mal so:
If Not vba.isemtpy(rAdressen) Then
das hilft manchmal.
Jetzt wo wir wissen, dass die Zellen EH nicht leer sind (sondern "" enthalten) könntest du diese Zeile aber auch komplett löschen (und das dazu gehörige EndIf!). Die Überprüfung auf "" müsste dann reichen.
Grüße,
Klaus M.vdT.

Anzeige
AW: EMail versenden / Empfänger in bestimmten Zellen
20.02.2013 11:52:58
Toumas
ist leider nicht mein Code, da ich keine Ahnung vom VBA habe und mich nur so durchwurschtel....
Die "If not isempty" und "Option Explicit" habe ich mal rauskommentiert
und es läuft bis : Recipients.Add rAdressen.Value
Dann erscheint ein Laufzeitfehler 424 : Objekt erforderlich
ist echt zum heulen, wenn man so wenig Ahnung wie ich hat..... sorry.
Danke für deine Mühen

Anzeige
AW: EMail versenden / Empfänger in bestimmten Zellen
20.02.2013 12:39:24
Toumas
habe den Fehler bei : Recipients.Add rAdressen.Value
gefunden....
der Punkt davor hat gefehlt *auf die Stirn klatsch*
so, jetzt muss das Ding nur noch die Mail automatisch verschicken.....

Danke für die RÜ! owT.
20.02.2013 12:46:55
Klaus
.

AW: Danke für die RÜ! owT.
20.02.2013 13:07:39
Toumas
Danke dir nochmals für alles.
Irgendwie komme ich noch dahinter warum
.display funktioniert
und bei
.send er mir einen Fehler bringt...

Anzeige
AW: Danke für die RÜ! owT.
20.02.2013 13:11:03
Toumas
Habe den Fehler gefunden, war in der Schreibweise der EMails die im Excel hinterlegt sind...
jetzt geht alles super.
vielen, vielen Dank

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

E-Mail Versand aus Excel an bestimmte Empfänger


Schritt-für-Schritt-Anleitung

Um E-Mails aus Excel an bestimmte Empfänger zu senden, kannst du folgendes VBA-Makro verwenden. Dieses Makro durchsucht eine Liste von E-Mail-Adressen und sendet die E-Mails automatisch, ohne dass Outlook manuell geöffnet werden muss.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Klicke auf Einfügen und dann auf Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Sub MailVersenden()
    Dim obMail As Object
    Dim obNachricht As Object
    Dim lngZeile As Long
    Dim strBCC As String

    ' Erste Adresse für BCC aus Zelle M9
    strBCC = Cells(9, 13).Value

    ' In einer Schleife alle Adressen aus Spalte A ab Zeile 2 zu einem String zusammenfassen
    For lngZeile = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        If Not IsEmpty(Cells(lngZeile, 1).Value) Then
            strBCC = strBCC & "; " & Cells(lngZeile, 1).Value
        End If
    Next lngZeile

    Set obMail = CreateObject("Outlook.Application")
    Set obNachricht = obMail.CreateItem(0)

    With obNachricht
        .To = strBCC
        .Subject = "Betreff der E-Mail"
        .Body = "Inhalt der E-Mail"
        .Send ' Direkt senden
    End With
End Sub
  1. Speichere das Modul und schließe den VBA-Editor.
  2. Führe das Makro aus, um die E-Mails an die in den Zellen angegebenen Empfänger zu senden.

Häufige Fehler und Lösungen

  • Fehler: „Objekt erforderlich“ bei Recipients.Add

    • Stelle sicher, dass du den Punkt vor rAdressen.Value nicht vergisst. Es sollte Recipients.Add rAdressen.Value sein.
  • Fehler: „Variable nicht definiert“

    • Achte darauf, dass du Option Explicit in deinem Code hast, um sicherzustellen, dass alle Variablen deklariert sind.
  • E-Mails werden nicht sofort gesendet

    • Wenn du .Display anstelle von .Send verwendest, wird die E-Mail nur angezeigt, nicht gesendet. Stelle sicher, dass du .Send verwendest, um die E-Mail direkt zu verschicken.

Alternative Methoden

Eine alternative Methode ist die Verwendung von Excel-Funktionen für die E-Mail-Benachrichtigung. Du kannst die HYPERLINK-Funktion in Excel nutzen, um einen E-Mail-Link zu erstellen:

=HYPERLINK("mailto:" & A1 & "?subject=Betreff&body=Inhalt", "E-Mail senden")

Diese Methode ist einfach, erfordert jedoch manuelle Eingriffe.


Praktische Beispiele

  1. Automatische E-Mail-Benachrichtigung:

    • Du kannst das Makro so anpassen, dass es nur E-Mails an spezifische Empfänger sendet, die in einer bestimmten Bedingung festgelegt sind, z.B. wenn ein bestimmter Wert in einer Zelle erreicht wird.
  2. E-Mail mit Anhang:

    • Ergänze das Makro um einen Anhang:
Dim strPfadAnhang As String
strPfadAnhang = "C:\Pfad\zur\Datei.txt"
.Attachments.Add strPfadAnhang

Tipps für Profis

  • Fehlerprotokollierung:

    • Füge eine Fehlerbehandlungsroutine hinzu, um mögliche Fehler während des Sendens zu protokollieren.
  • E-Mail-Alarmierung:

    • Nutze das Makro, um regelmäßige Erinnerungen per E-Mail zu versenden, indem du es mit dem Taskplaner oder einer Excel-Zeitsteuerung kombinierst.
  • E-Mail-Formatierung:

    • Verwende HTML-Formatierung für den E-Mail-Inhalt, um professioneller aussehende E-Mails zu versenden.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die E-Mail-Adressen korrekt sind?
Überprüfe die Zellen, in denen die E-Mail-Adressen gespeichert sind. Achte darauf, dass keine Leerzeichen oder ungültige Zeichen vorhanden sind.

2. Warum bekomme ich eine Fehlermeldung beim Senden?
Das kann passieren, wenn eine der Zellen, die du verwendest, nicht den richtigen Datentyp hat. Stelle sicher, dass alle Zellen, die E-Mail-Adressen enthalten, korrekt formatiert sind.

3. Kann ich das Makro anpassen, um mehrere E-Mail-Adressen in einer Zelle zu verarbeiten?
Ja, du kannst die E-Mail-Adressen in einer Zelle durch Semikolons getrennt speichern und das Makro entsprechend anpassen, um diese zu extrahieren.

Nutze dieses Wissen, um effektiv E-Mails aus Excel zu senden und deine Arbeitsabläufe zu optimieren!

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige