Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1660to1664
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
VBA eMail senden
14.12.2018 09:13:02
Erik
Hallo zusammen,
ich habe in meiner Tabelle ein Makro das automatisch eine E-Mail versendet, wenn man auf das Brief-Icon klickt.
Das Problem, das ich habe ist folgendes:
Wenn in einer Zeile, ein Kunde in Spalte N selektiert wird, für den nur ein Ersatzteil bestellt ist macht das Makro genau das was es soll.
Wenn jedoch mehrere Teile für ein und denselben Kunden bestellt sind, werden (in meinem Beispiel KD: Meyer) 3 Mails an den gleichen Empfänger gesendet.
Kann ich im Makro angeben, das wenn die gleiche eMail Adresse mehrmals vorkommt, nur eine versendet wird ?
anbei der Link zur Exceltabelle
https://www.herber.de/bbs/user/126094.xlsm
Gruß
Erik

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA eMail senden
14.12.2018 09:31:06
Torsten
Hallo Erik,
wie kommen denn die Email Adressen in die Spalte AB?
Ich wuerde hier, nachdem dort die Email Adressen drin sind, doppelte Eintraege entfernen. Dann sollte ja nur noch eine Email an die jeweilige Adresse verschickt werden.
Hier mal ein Beispiel dafuer. Ich wuerde das dann in deinen Code einfuegen, bevor die Email vorbereitet wird

Dim iRow As Integer, iRowL As Integer
iRowL = Cells(Cells.Rows.Count, 28).End(xlUp).Row
For iRow = iRowL To 7 Step -1
If WorksheetFunction.CountIf(Columns(28), Cells(iRow, 28)) > 1 Then
Cells(iRow, 28).ClearContents
End If
Next iRow

Gruss Torsten

Anzeige
AW: VBA eMail senden
14.12.2018 10:02:23
PeterK
Hallo
Sub EMailSenden()

    Dim objOL As Object
    Dim objMail As Object
    Dim Bezeichnung As String
    Dim EMailan As String
    Dim strName As String
    Dim intLZ As Integer
    Dim i As Integer
    Dim j As Integer
    Dim Info As String
    Dim Zähler As Long

    Set objOL = CreateObject("Outlook.Application")
    With Sheets("Kundenteile")
        intLZ = .Cells(Rows.Count, 14).End(xlUp).Row
        For i = 1 To intLZ
            If .Cells(i, 14).Value = "a" Then
                Zähler = Zähler + 1
                Set objMail = objOL.CreateItem(0)
                EMailan = .Range("AB" & i).Value
                With objMail
                    .To = EMailan
                    .Subject = "Terminvereinbarung - Fahrzeug: " & Range("D" & i)
                    .Body = Range("AD" & i) & " " & Range("AC" & i) _
                            & vbCrLf & "" _
                            & vbCrLf & "Ihre bestellten Ersatzteile sind bei uns eingetroffen." _
                            & vbCrLf & ""
                    .Display

                End With
                For j = i To intLZ
                    If EMailan = .Range("AB" & j).Value Then
                        .Cells(j, 10).Value = Date
                        Info = "*KD Info per eMail*"
                        .Cells(j, 11) = .Cells(j, 11) & " " & Info
                        .Cells(j, 14).ClearContents
                    End If
                Next j
            End If
        Next i
    End With


    If Zähler = 0 Then
        MsgBox "Es wurden keine Kunden selektiert"
    Else
        MsgBox Zähler & " Mail(s) erfolgreich versendet"
    End If

End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Anzeige
AW: VBA eMail senden
14.12.2018 09:47:35
Karl-Heinz
Hallo Erik,
hier mal eine Erweiterung Deines codes. Probier's mal aus:
Sub EMailSenden()
Dim objOL As Object
Dim objMail As Object
Dim Bezeichnung As String
Dim EMailan As String
Dim strName As String
Dim intLZ As Integer
Dim i As Integer
Dim Info As String
Dim Zähler As Long
Dim sMails As String
Set objOL = CreateObject("Outlook.Application")
With Sheets("Kundenteile")
intLZ = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To intLZ
If .Cells(i, 14).Value = "a" Then
If InStr(sMails & ",", Range("B" & i).Value & ",") = 0 Then
sMail = sMail & Range("B" & i).Value & ","
Zähler = Zähler + 1
Set objMail = objOL.CreateItem(0)
EMailan = .Range("AB" & i).Value
With objMail
.To = EMailan
.Subject = "Terminvereinbarung - Fahrzeug: " & Range("D" & i)
.Body = Range("AD" & i) & " " & Range("AC" & i) _
& vbCrLf & "" _
& vbCrLf & "Ihre bestellten Ersatzteile sind bei uns eingetroffen." _
& vbCrLf & "" _
.Display
End With
.Cells(i, 10).Value = Date
Info = "*KD Info per eMail*"
Cells(i, 11) = Cells(i, 11) & " " & Info
.Cells(i, 14).ClearContents
End If
End If
Next i
End With
If Zähler = 0 Then
MsgBox "Es wurden keine Kunden selektiert"
Else
MsgBox Zähler & " Mail(s) erfolgreich versendet"
End If
End Sub
Der Kundenname aus Spalte "B" wird in einer Var gesammelt. So kann ermittelt werden, ob schon eine EMail versendet wurde.
Alternativ kannst Du ja auch die Auftragsnummer oder sonst was nehmen.
viele Grüße
Karl-Heinz
Anzeige
AW: VBA eMail senden
14.12.2018 10:16:32
Karl-Heinz
Hallo Erik,
hier mal eine Erweiterung Deines codes. Probier's mal aus:

Sub EMailSenden()
Dim objOL As Object
Dim objMail As Object
Dim Bezeichnung As String
Dim EMailan As String
Dim strName As String
Dim intLZ As Integer
Dim i As Integer
Dim Info As String
Dim Zähler As Long
Dim sMails As String
Set objOL = CreateObject("Outlook.Application")
With Sheets("Kundenteile")
intLZ = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To intLZ
If .Cells(i, 14).Value = "a" Then
If InStr(sMails & ",", Range("B" & i).Value & ",") = 0 Then
sMails = sMails & Range("B" & i).Value & ","
Zähler = Zähler + 1
Set objMail = objOL.CreateItem(0)
EMailan = .Range("AB" & i).Value
With objMail
.To = EMailan
.Subject = "Terminvereinbarung - Fahrzeug: " & Range("D" & i)
.Body = Range("AD" & i) & " " & Range("AC" & i) _
& vbCrLf & "" _
& vbCrLf & "Ihre bestellten Ersatzteile sind bei uns eingetroffen." _
& vbCrLf & "" _
.Display
End With
.Cells(i, 10).Value = Date
Info = "*KD Info per eMail*"
Cells(i, 11) = Cells(i, 11) & " " & Info
.Cells(i, 14).ClearContents
End If
End If
Next i
End With
If Zähler = 0 Then
MsgBox "Es wurden keine Kunden selektiert"
Else
MsgBox Zähler & " Mail(s) erfolgreich versendet"
End If
End Sub

Der Kundenname aus Spalte "B" wird in einer Var gesammelt. So kann ermittelt werden, ob schon eine EMail versendet wurde.
Alternativ kannst Du ja auch die Auftragsnummer oder sonst was nehmen.
viele Grüße
Karl-Heinz
Anzeige
AW: VBA eMail senden
14.12.2018 10:31:59
Erik
Hallo Karl-Heinz,
vielen Dank, fast perfekt! :-)
Es wird nur noch eine Mail versendet aber...
... es wird allerdings auch nur noch ein Eintrag in Spalte J und K gesetzt.
Dieser sollte bei allen Teilen gesetzt werden..
LG
Erik
AW: VBA eMail senden
14.12.2018 10:34:54
PeterK
Hallo
Sieh Dir meinen Code an ;-)
AW: VBA eMail senden
14.12.2018 10:47:53
Erik
Hallo PeterK,
hmm...
... Deinen Beitrag hatte ich komplett überlesen! Sorry
Bei Deinem Code klappt alles.
DANKESCHÖN
und
Gruß
Erik
AW: VBA eMail senden
14.12.2018 10:47:50
Karl-Heinz
Hallo Erik,
falls noch Bedarf besteht:
Brauchst Du nur das End If entsprechend höher schieben...
Dann sollte es gehen.
Sub EMailSenden()
Dim objOL As Object
Dim objMail As Object
Dim Bezeichnung As String
Dim EMailan As String
Dim strName As String
Dim intLZ As Integer
Dim i As Integer
Dim Info As String
Dim Zähler As Long
Dim sMails As String
Set objOL = CreateObject("Outlook.Application")
With Sheets("Kundenteile")
intLZ = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To intLZ
If .Cells(i, 14).Value = "a" Then
If InStr(sMails & ",", Range("B" & i).Value & ",") = 0 Then
sMails = sMails & Range("B" & i).Value & ","
Zähler = Zähler + 1
Set objMail = objOL.CreateItem(0)
EMailan = .Range("AB" & i).Value
With objMail
.To = EMailan
.Subject = "Terminvereinbarung - Fahrzeug: " & Range("D" & i)
.Body = Range("AD" & i) & " " & Range("AC" & i) _
& vbCrLf & "" _
& vbCrLf & "Ihre bestellten Ersatzteile sind bei uns eingetroffen." _
& vbCrLf & "" _
.Display
End With
End if
.Cells(i, 10).Value = Date
Info = "*KD Info per eMail*"
Cells(i, 11) = Cells(i, 11) & " " & Info
.Cells(i, 14).ClearContents
End If
Next i
End With
If Zähler = 0 Then
MsgBox "Es wurden keine Kunden selektiert"
Else
MsgBox Zähler & " Mail(s) erfolgreich versendet"
End If
End Sub

Anzeige
AW: VBA eMail senden
14.12.2018 10:52:11
Erik
Auch an Dich Karl-Heinz und Thorsten vielen Dank für eure Hilfe.
LG
Erik

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige