ich bastel gerade an einer Datei, in der eine E-Mail automatisch generiert wird, wenn in einer bestimmten Zelle ein Eintrag erfolgt. Den Bezug zum Empfänger, den E Mailbetreff und sogar den E Mailtext habe ich schon so hinbekommen das Excel sich dies aus exakt definierten Zellen zieht und sich die E Mail sozusagen zusammen bastelt. :-)
Wenn es aber um das Thema Anlagen geht, beiße ich mir gerade die Zähne raus.
Ich habe eine abgespeckte Datei erstellt, in der es nur um das Thema Anlage versenden geht.
Wenn in D2 ein Eintrag oder eine Änderung erfolgt soll keine Anlage verschickt werden.
Erfolgt hingegen ein Eintrag oder eine Änderung in D3 soll eine Anlage verschickt werden.
Wie bekomme ich es hin, dass von D2 aus keine Anlage verschickt wird?
wenn ich AttachmentText = "C:\Users\S7ebe\Desktop\EMailversenden\Testdatei\Testdatei.docx" wie folgt schreibe AttachmentText = "" läuft der VBA Code nicht durch.
Wenn ich AttachmentText weglasse und es auch im Call streiche, dann läuft der VBA Code ebenfalls nicht durch. Call MailperOutlook(RecipientText, CCText, BCCText, SubjectText, BodyText)
Neben der Datei poste ich auch den Code von Tabelle1:
https://www.herber.de/bbs/user/147879.xlsm
Über den goldenen Tipp wäre ich mega dankbar.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As String
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
'NOCH KONTROLLIEREN ob dies die Variabel ist um die Zelle wiederzugeben in der ein neuer Wert eingetragen wurde'
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
Dim Adddress As String
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
'Noch Kontrollieren ob diese Variabel notwendig ist um die genauen Spalten- und/oder Zelladressen einzugeben'
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
Dim Nachname As String
'Variabel für den E Mailtext'
'Dies kann für den E Mailtext gezogen werden und wird wie folgt eingebaut: & Nachname & '
Dim Vorname As String
'Beispiel als variabel für EMailtext'
Dim Anrede As String
'Beispiel als variabel für EMailtext'
Dim Eintritt As String
'Beispiel als variabel für EMailtext'
Dim Kostenstelle As String
'Beispiel als variabel für EMailtext'
Dim Wert As String
'Variabel um den Text, welcher in die Zelle geschrieben wird, in dem E Mailtext wiederzugeben'
Dim RecipientText As String
'dies ist die Variabel für die E Mailadresse für den Empfänger'
Dim CCText As String
'dies ist die Variabel für den CC Mailempfänger ab Beispiel D10 bis D14 XY'
'CC-Adressen im Aufrufenden Microsoft Excel Objekte (Tabelle1) müssen 3 Angaben ergänzt werden:'
'Dim CCText as String'
'CCText = "Text@gmx.de"'
'den Call am Ende um den Parameter ccText erweitern'
'in dem aufgerufenen Modul MailPerOutlook in der ersten Zeile in der Klammer ", CCText as String " ergänzen'
'weiter unten steht dann ".CC = CCText" statt ".CC="" "'
Dim BCCText As String
'dies ist die Variabel für den BCC Mailempfänger ab Beispiel D10 bis D14 XY'
'CC-Adressen im Aufrufenden Microsoft Excel Objekte (Tabelle1) müssen 3 Angaben ergänzt werden:'
'Dim BCCText as String'
'BCCText = "Test@gmx.de"'
'den Call am Ende um den Parameter BCCText erweitern'
'in dem aufgerufenen Modul MailPerOutlook in der ersten Zeile in der Klammer ", BCCText as String " ergänzen'
'weiter unten steht dann ".BCC = BCCText" statt ".BCC="" "'
Dim SubjectText As String
Dim BodyText As String
Dim AttachmentText As String
'dies ist die Variabel für den E-Mail Anhang siehe Beispiel D18, D19 und D21'
'D2'
'1 E-Mailadresse ist fest einprogrammiert'
' mit & vbCr & wird noch ein Absatz in den E Mailtext eingefügt'
If Target.Address = "$D$2" Then
'Hier mit Target.Address die Zelle D5 angesprochen'
'der erste VBA Befehl (D2) muss mit If starten - alle weiteren mit ElseIf"'
Wert = Target.Text
Nachname = Cells(Target.Row, 3).Text
'Hier wird die Spalte mit Mitarbeiternamen als Wert für den E Mailtext angesprochen. 3 steht für die Spalte C'
RecipientText = "S7eben@gmx.de"
'Die E Mailadresse ist fest einprogrammiert'
SubjectText = "Änderung an Tabelle XYZ"
BodyText = "In der Tabelle XYZ hat es in Zelle D2 " & Zelle & " eine Änderung gegeben." & vbCr & "Der neue Eintrag ist " & Wert & ". " & vbCr & "Dies ist dem Mitarbeiter " & Nachname & " zuzuordnen."
'mit & vbCr & kann ein Absatz in der E Mail erzeugt werden'
AttachmentText = "C:\Users\S7ebe\Desktop\EMailversenden\Testdatei\Testdatei.docx"
Call MailperOutlook(RecipientText, CCText, BCCText, SubjectText, BodyText, AttachmentText)
'D3'
'2 E-Mailadressen sind fest einprogrammiert'
' mit & vbCr & wird noch ein Absatz in den E Mailtext eingefügt'
ElseIf Target.Address = "$D$3" Then
'Hier mit Target.Address die Zelle D3 angesprochen'
'der erste VBA Befehl (D2) muss mit If starten - alle weiteren mit ElseIf"'
Wert = Target.Text
Nachname = Cells(Target.Row, 3).Text
'Hier wird die Spalte mit Mitarbeiternamen als Wert für den E Mailtext angesprochen. 3 steht für die Spalte C'
RecipientText = "S7eben@gmx.de; sb@avea.de"
'2 E-Mailadressen sind fest einprogrammiert'
SubjectText = "Änderung an Tabelle XYZ"
BodyText = "In der Tabelle XYZ hat es in Zelle F2 " & Zelle & " eine Änderung gegeben." & vbCr & "Der neue Eintrag ist " & Wert & ". " & vbCr & "Dies ist dem Mitarbeiter " & Nachname & " zuzuordnen."
'mit & vbCr & kann ein Absatz in der E Mail erzeugt werden'
AttachmentText = "C:\Users\S7ebe\Desktop\EMailversenden\Testdatei\Testdatei.docx"
Call MailperOutlook(RecipientText, CCText, BCCText, SubjectText, BodyText, AttachmentText)
End If
End Sub