in meinem Datenblatt Tabelle1 würde ich gerne den Bereich AS1:AV12 per Outlook als Tabelle bzw. HTML versenden.
Mit dem Makro Rekorden wird nur die ganze Datei versendet.
Kann mir jemand helfen ?
Gruß Ralf
Code:Private Sub Mail_BereichalsBereich_Word1() ' Sendet Mail mit integriertem Bereich als Bereich mit Signatur Dim WSh1 As Worksheet, WSh2 As Worksheet Dim sMailtext As String, sBer As String sBer = "AS1:AV12" ' Kopierbereich Set WSh1 = ThisWorkbook.Sheets("Tabelle1") ' Blatt mit Maildaten Set WSh2 = ThisWorkbook.Sheets("Tabelle2") ' Datenblatt WSh2.range(sBer).Copy ' Bereich kopieren With CreateObject("Outlook.Application").CreateItem(0) .BodyFormat = 2 ' 2=HTML-Format, 3=Richtext .Subject = WSh1.range("A2").Value ' Betreff .To = WSh1.range("A3").Value ' Empfänger .CC = WSh1.range("A4").Value ' Kopie sMailtext = WSh1.range("A5").Value & vbLf .GetInspector ' Signatur holen .htmlbody = Replace(sMailtext, vbLf, "<br>") & .htmlbody .Display With .GetInspector.WordEditor.Application.Selection .start = Len(sMailtext) + 1 .Paste ' Bereich in Mail einfügen End With End With End Sub Private Sub Mail_BereichalsBereich_Word2() ' Sendet Mail mit integriertem Bereich als Bereich ohne Signatur Dim WSh1 As Worksheet, WSh2 As Worksheet Dim sBer As String sBer = "AS1:AV12" ' Kopierbereich Set WSh1 = ThisWorkbook.Sheets("Tabelle1") ' Blatt mit Maildaten Set WSh2 = ThisWorkbook.Sheets("Tabelle2") ' Datenblatt WSh2.range(sBer).Copy ' Bereich kopieren With CreateObject("Outlook.Application").CreateItem(0) .BodyFormat = 2 ' 2=HTML-Format .Subject = WSh1.range("A2").Value ' Betreff .To = WSh1.range("A3").Value ' Empfänger .CC = WSh1.range("A4").Value ' Kopie .Display .GetInspector.WordEditor.range.Paste ' Bereich in Mail einfügen End With End Sub
Sub Mail_Signatur()
' Sendet Mail mit integriertem Bereich als Bereich mit Signatur
Dim WSh1 As Worksheet, WSh2 As Worksheet
Dim sMailtext As String, sBer As String
sBer = "AS1:AV12" ' Kopierbereich
Set WSh1 = ThisWorkbook.Sheets("Tabelle1") ' Blatt mit Maildaten
Set WSh2 = ThisWorkbook.Sheets("Tabelle1") ' Datenblatt
WSh2.Range(sBer).Copy ' Bereich kopieren
With CreateObject("Outlook.Application").CreateItem(0)
.BodyFormat = 2 ' 2=HTML-Format, 3=Richtext
.Subject = WSh1.Range("AS1").Value ' Betreff
.To = WSh1.Range("AX1").Value ' Empfänger
.CC = WSh1.Range("AX2").Value ' Kopie
sMailtext = WSh1.Range("AX3").Value & vbLf
.GetInspector ' Signatur holen
.htmlbody = Replace(sMailtext, vbLf, "
") & .htmlbody
' .Display
' .Send
With .GetInspector.WordEditor.Application.Selection
.Start = Len(sMailtext) + 1
.Paste ' Bereich in Mail einfügen
End With
.Send
End With
End Sub
Gruß RalfVBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
Neues Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (deineDatei.xlsm)" und wähle Einfügen > Modul.
Code einfügen: Kopiere den folgenden Code in das Modul:
Private Sub Mail_BereichalsBereich_Word1()
Dim WSh1 As Worksheet, WSh2 As Worksheet
Dim sMailtext As String, sBer As String
sBer = "AS1:AV12" ' Kopierbereich
Set WSh1 = ThisWorkbook.Sheets("Tabelle1") ' Blatt mit Maildaten
Set WSh2 = ThisWorkbook.Sheets("Tabelle1") ' Datenblatt
WSh2.Range(sBer).Copy ' Bereich kopieren
With CreateObject("Outlook.Application").CreateItem(0)
.BodyFormat = 2 ' 2=HTML-Format
.Subject = WSh1.Range("A2").Value ' Betreff
.To = WSh1.Range("A3").Value ' Empfänger
.CC = WSh1.Range("A4").Value ' Kopie
sMailtext = WSh1.Range("A5").Value & vbLf
.GetInspector ' Signatur holen
.htmlbody = Replace(sMailtext, vbLf, "<br>") & .htmlbody
With .GetInspector.WordEditor.Application.Selection
.Start = Len(sMailtext) + 1
.Paste ' Bereich in Mail einfügen
End With
.Display ' oder .Send für sofortigen Versand
End With
End Sub
Anpassen der Parameter: Stelle sicher, dass die Parameter wie Betreff, Empfänger und Kopie korrekt definiert sind.
Makro ausführen: Drücke F5, um das Makro auszuführen.
.Send Befehl vor dem Einfügen des kopierten Bereichs ausführst. Achte darauf, dass .Display oder .Send erst nach dem Paste-Befehl kommt.Betreff, Empfänger und CC korrekt sind.E-Mail mit Signatur:
' Beispielcode für das Versenden einer E-Mail mit Signatur
Private Sub Mail_Signatur()
' ...
.Display ' zeigt die E-Mail an
End Sub
E-Mail ohne Signatur:
' Beispielcode für das Versenden einer E-Mail ohne Signatur
Private Sub Mail_ohne_Signatur()
' ...
.Send ' versendet die E-Mail direkt
End Sub
"<a href='file://deinDateipfad'>Link</a>", um einen Dateipfad als klickbaren Link in die E-Mail einzufügen.1. Wie kann ich den Versand von .Display auf .Send ändern?
Stelle sicher, dass das Einfügen des kopierten Bereichs nach dem .Display oder .Send erfolgt, um Fehler zu vermeiden.
2. Kann ich eine Excel-Tabelle direkt in die E-Mail einfügen? Ja, indem du die Copy-Methode verwendest, kannst du die Excel-Tabelle direkt in den E-Mail-Body einfügen.
3. Welche Excel-Version benötige ich für diese Methoden? Die beschriebenen Methoden funktionieren in Excel 2010 und späteren Versionen, die VBA unterstützen.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen