Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1752to1756
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
Mail automatisch versenden
17.04.2020 14:03:13
Tom
Hallo zusammen,
ich habe eine Arbeitsmappe aus der Emails an viele Empfänger via Outlook versendet werden können.
Alternativ
- ohne Dateianhang
- mit einem Dateianhang (Pfad vom PC in Spalte H)
- mit zwei Dateianhängen (Pfad vom PC in Spalte I)
Ist es möglich, in Spalte G ein Firmenlogo (jpg/png), ähnlich einer Signatur, miteinzufügen?
Anbei mal die Bsp-Datei: https://www.herber.de/bbs/user/136817.xlsm
Danke vorab
Gruß
TOM

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mail automatisch versenden
17.04.2020 16:40:53
volti
Hallo Tom,
grundsätzlich ist das möglich und es gibt auch verschiedene Möglichkeiten, das einzufügen.
Man kann einen ganzen Zellbereich original oder als Bild einfügen oder auch eben nur ein Bild einfügen.
Deinen Code habe ich mir nur oberflächlich angesehen und auch so gelassen....
Im ersten Makro habe ich mal mit der WordEditor-Methode a) eine Zell-Kopiermöglichkeit und b) eine NurBild-Kopiermöglichkeit reingesetzt.
Entscheide selbst, was besser ist und remme den jeweiligen anderen Code aus.
Nachfolgend findest Du einen Beispielcode. Vielleicht gefällt es Dir ja.

Sub Eine_Datei()
    Dim OutApp As Object, Mail As Object
    Dim Nachricht
    Dim lngAnz As Long, i As Long
    Dim sMailtext As String
    lngAnz = Application.InputBox("Empfänger von Zeile 4  bis ...", "Anzahl der Mails", , , , , , 1)
    For i = 4 To lngAnz 'Anzahl der Mails
    'Variablen müssen bei jeder Schleife neu initalisiert werden
        Set OutApp = CreateObject("Outlook.Application")
        Set Nachricht = OutApp.CreateItem(0)
        With Nachricht
            .To = Cells(i, 1) 'Adresse
            .Subject = Cells(i, 2) 'Betreffzeile
             .OriginatorDeliveryReportRequested = True ' übermittlungsbestätigung
            .ReadReceiptRequested = True ' Lesebestätigung
            .attachments.Add Trim(Cells(i, 8).Text)
            sMailtext = Cells(i, 3) & Chr$(10) & Chr$(10) & Cells(i, 4) & Chr$(10) & Chr$(10) & Cells(i, 5) & Chr$(10) _
                      & Chr$(10) & Cells(i, 6) & Chr$(10) & Chr$(10)
            .Body = sMailtext & Trim$(Cells(i, 7)) 'Sendetext
            'Hier wird die Mail gleich in den Postausgang gelegt
            'und die Sicherheitsabfrage muss jedesmall bestätigt werden
            '.Send
            'Hier wird die Mail "angezeigt"
            'aber gleich versendet,... OHNE Sicherheitsabrage
            .Display
             With .Getinspector.WordEditor.Application.Selection
'Entweder einen Bereich kopieren, hier nur eine Zelle
 Rem              ThisWorkbook.Worksheets("Mail").Cells(i, "G").Copy
'Oder nur die Grafik
               ThisWorkbook.Worksheets("Mail").Shapes.Range(Array("Picture 4")).Select
               Selection.Copy
'bis hier, eins von beiden ausremmen
               .Start = Len(sMailtext)
               .End = Len(sMailtext)
               .Paste
             End With
             SendKeys "%s", True
        End With
        'Variablen zurücksetzen sonst geht es nicht
        Set OutApp = Nothing 'CreateObject("Outlook.Application")
        Set Nachricht = Nothing 'OutApp.CreateItem(0)
        Application.Wait (Now + TimeValue("0:00:01"))
    Next i
End Sub
viele Grüße
Karl-Heinz

Anzeige
AW: Mail automatisch versenden
19.04.2020 16:52:17
Tom
Hallo Karl-Heinz,
bin erst jetzt dazu gekommen, es zu testen. Sorry für die späte Rückmeldung.
HJabe Dir mal die Fehlermeldung eongefügt. Habe bestimmt irgendetwas falsch gelöscht ...
https://www.herber.de/bbs/user/136865.xlsm
Wäre super, wenn Du nochmal kurz drüber schauen könntest.
Danke
TOM
AW: Mail automatisch versenden
19.04.2020 19:08:42
volti
Hallo Tom,
danke für die Rückmeldung. Du hast keine Fehlermeldung eingefügt, sondern die gelb markierte Zeile, wo das Programm gerade steht. Aber nicht schlimm.
Der Dateiname, der aus Spalte $H stammend angehängt werden soll, ist fehlerhaft. Wir sind hier nicht im HTML oder DOS unterwegs, so dass dieser Pfad "..\Dropbox\IMG_4305.PNG.jpg" schon vollständig sein muss und nicht einleitend mit Platzhalter .. funktioniert. Im u.a. Code habe ich deshalb einen Fehlerabfang reingebaut.
Das ist eine Bilddatei. Falls Du vorhast, die einzubettende Grafik als Datei mitzuschicken, sage ich Dir hiermit, dass das nicht nötig ist...
Außerdem hast Du den wichtigsten Codeteil zum Einfügen der Grafik überhaupt nicht eingebaut. S. u. Code...
Noch etwas. Der Code fügt aktuell immer die Grafik 4 ein. Wenn Du je Zeile eine andere Grafik nehmen willst, müssen wir das noch etwas abändern.
https://www.herber.de/bbs/user/136872.xlsm

Sub Eine_Datei()
    Dim OutApp As Object, Mail As Object
    Dim Nachricht
    Dim lngAnz As Long, i As Long
    Dim sMailtext As String
    lngAnz = Application.InputBox("Empfänger von Zeile 4  bis ...", "Anzahl der Mails", , , , , , 1)
    For i = 4 To lngAnz 'Anzahl der Mails
    'Variablen müssen bei jeder Schleife neu initalisiert werden
        Set OutApp = CreateObject("Outlook.Application")
        Set Nachricht = OutApp.CreateItem(0)
        With Nachricht
            .To = Cells(i, 1) 'Adresse
            .Subject = Cells(i, 2) 'Betreffzeile
             .OriginatorDeliveryReportRequested = True ' übermittlungsbestätigung
            .ReadReceiptRequested = True ' Lesebestätigung
            If Dir$(Trim(Cells(i, 8).Text)) <> "" Then
              .attachments.Add Trim(Cells(i, 8).Text)
            End If
            sMailtext = Cells(i, 3) & Chr$(10) & Chr$(10) & Cells(i, 4) & Chr$(10) & Chr$(10) & Cells(i, 5) & Chr$(10) _
                      & Chr$(10) & Cells(i, 6) & Chr$(10) & Chr$(10)
            .Body = sMailtext & Trim$(Cells(i, 7)) 'Sendetext
            'Hier wird die Mail gleich in den Postausgang gelegt
            'und die Sicherheitsabfrage muss jedesmall bestätigt werden
            '.Send
            'Hier wird die Mail "angezeigt"
            'aber gleich versendet,... OHNE Sicherheitsabrage
            .Display
             With .Getinspector.WordEditor.Application.Selection
'Entweder einen Bereich kopieren, hier nur eine Zelle
 Rem              ThisWorkbook.Worksheets("Mail").Cells(i, "G").Copy
               ThisWorkbook.Worksheets("Mail").Shapes.Range(Array("Picture 4")).Select
               Selection.Copy
               .Start = Len(sMailtext)
               .End = Len(sMailtext)
               .Paste
             End With
 '            SendKeys "%s", True
        End With
        'Variablen zurücksetzen sonst geht es nicht
        Set OutApp = Nothing 'CreateObject("Outlook.Application")
        Set Nachricht = Nothing 'OutApp.CreateItem(0)
        Application.Wait (Now + TimeValue("0:00:01"))
    Next i
End Sub
viele Grüße
Karl-Heinz

Anzeige
AW: Mail automatisch versenden
20.04.2020 07:50:59
Tom
Guten Morgen Karl-Heinz,
Der Dateiname, der aus Spalte $H stammend angehängt werden soll, ist fehlerhaft. Wir sind hier nicht im HTML oder DOS unterwegs, so dass dieser Pfad "..\Dropbox\IMG_4305.PNG.jpg" schon vollständig sein muss und nicht einleitend mit Platzhalter .. funktioniert. Im u.a. Code habe ich deshalb einen Fehlerabfang reingebaut. Das habe ich gesehen - war ohne Prüfung eingefügt.
Noch etwas. Der Code fügt aktuell immer die Grafik 4 ein. Wenn Du je Zeile eine andere Grafik nehmen willst, müssen wir das noch etwas abändern.
Da steh ich nun auf dem Schlauch ... Woher kommt die Grafik 4 bzw welche ist das? Wenn es nicht ein zu großer Aufwand ist, wäre es super wenn man in jede Zeile ne andere Grafik einfügen könnte.
Danke vorab, ich bin in VBA nicht ganz so fit, habe mir das alles selbst zusammengesucht bzw. zusammengebaut.
Gruß
TOM
Anzeige
AW: Mail automatisch versenden
20.04.2020 09:29:08
volti
Hallo Tom,
habe Dir in anliegender Datei mal einiges reinprogrammiert (ohne es komplett durchzutesten).
Es sollte jetzt in jeder Zeile eine eigene Grafik stehen können. Schreibst Du "Signatur" in die jeweilige Zelle $G, wird auch Deine Signatur angefügt. Vielleicht ganz nützlich.
Außerdem werden die beiden Zellen $H und $I auf Dateinamen abgefragt und, wenn nicht leer, die entsprechende Anlage beigefügt. Den Pfad kannst Du da mit reinschreiben oder oben im Code für alle angeben. Somit brauchst Du nicht unbedingt Deine drei Startbuttons.
Probiere es mal aus. Ich hoffe, es klappt dann auch alles.
https://www.herber.de/bbs/user/136878.xlsm
viele Grüße
Karl-Heinz
Anzeige
AW: Mail automatisch versenden
21.04.2020 09:48:36
Tom
Hallo Karl-Heinz,
ein paar Fragen habe ich dennoch:
1)Es sollte jetzt in jeder Zeile eine eigene Grafik stehen können
Ich kann also in jede Zelle eine beliebige Grafik einfügen?
2)Schreibst Du "Signatur" in die jeweilige Zelle $G
Muss meine "Signatur" ein jpg sein?
3)habe Dir in anliegender Datei mal einiges reinprogrammiert (ohne es komplett durchzutesten)
In Modul2 / Sub Mail_Senden() ?
4)Beim Starten des Makros kommt die Fehlermeldung ".Display" - siehe Anlage
5)Was hat es mit dem Befehl "BilderEinfügen.xlsb" in Spalte H auf sich?
6)Woher kommt die Signatur? .Getinspector: sSignatur = .body 'Signatur holen
Muss die irgendwo hinterlegt werden?
7)sPfad = "C:\Users\voltm\Desktop\MyTools\Makros" 'Hier den Pfad zu den Anlagen eingeben
Hier muss ich meinen Pfad eingeben. Wie viele Dateien können da angehängt werden?
Sorry für die vielen (komplizierten) Fragen, aber da der Code schon sehr alt ist kann ich gewisse Dinge nicht mehr ganz nachvollziehen. Habe ir den vor ein paar Jahren aus verschiedenen Codes zusammengebastelt ...
https://www.herber.de/bbs/user/136923.xlsm
Danke für Deine große Hilfe :)
Gruß
Tom
Anzeige
AW: Mail automatisch versenden
21.04.2020 11:19:16
volti
Hallo Tom,
hier die Antworten:
Ich kann also in jede Zelle eine beliebige Grafik einfügen?
ja. Die Grafik sollte vollständig in der Zelle sein. Ggf. aufzoomen
Muss meine "Signatur" ein jpg sein?
Das ist Deine Outlooksignatur und kein Bild, die z.B. bei einer neuen Mail automatisch von Outlook eingefügt wird.
In Modul2 / Sub Mail_Senden() ?
Du brauchst eigentlich nur noch dieses eine Makro, da es die evtl. Anlagen flexibel handelt.
Beim Starten des Makros kommt die Fehlermeldung ".Display" - siehe Anlage
Kann ich nicht nachvollziehen....
Ggf. hast Du über eine zu hohe Nummerneingabe eine Leerzeile gehabt. Ist jetzt ausgeschlossen.
Was hat es mit dem Befehl "BilderEinfügen.xlsb" in Spalte H auf sich?
Das war nur eine Musterdatei von mir zum Testen. Da schreibst Du natürlich deinen eigenen Anlagedateinamen rein oder löscht sie einfach.
Woher kommt die Signatur? .Getinspector: sSignatur = .body 'Signatur holen
Wie schon gesagt, kannst Du ja in Outlook eine Signatur hinterlegen. Hierzu bitte in Outlook schlau machen.
Du musst aber keine Signatur anlegen.
Hier muss ich meinen Pfad eingeben. Wie viele Dateien können da angehängt werden?
Der hier angegebene Pfad gilt für alle Dateien (sind hier ja max. zwei) bei denen noch kein Pfad vorangestellt wurde.
Hier eine überarbeitete Version mit etwas mehr Sicherheit:
MailsSenden.xlsm
viele Grüße
Karl-Heinz
Anzeige

208 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige