Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Bereich als E-Mail versenden

Bereich als E-Mail versenden
07.09.2022 19:52:10
Ralf
Guten Abend,
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
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereich als E-Mail versenden
07.09.2022 23:22:49
volti
Hallo Ralf,
in dem von Oberschlumpf referenzierten Beispielcode wird per HTML eine Tabelle nachgebaut. Kann man machen, ist dann aber auch nicht weiter formatiert.
Um einen Bereich als Bereich oder einen Bereich als Bild in eine eMail zu bekommen, gibt es mehrere Methode. Bei Google-Suchen wirst Du sehr oft die Methode über RangeToHTML finden. Klappt ja auch sehr gut.
Ich verwende eher die Copy-Methode. Hier mal zwei Beispiele für einen Bereich als Bereich-Kopie, bei der der Bereich nicht als Bild sondern eben als Tabelle eingefügt wird.
Da Du zu den restlichen Parametern keine Angabe gemacht hast, werden diese Parameter auch aus einem Blatt übernommen. Kann man auch anders machen.
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

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Bereich als E-Mail versenden
08.09.2022 07:08:46
Ralf
Hallo Karl Heinz,
danke für den Code.
Habe die Version mit Signatur verwendet und es klappt.
Allerdings wenn ich den Versand von .Display auf .Send ändere bekomme ich diese Fehlermeldung:
Laufzeitfehler 5 Ungültiger Prozeduraufruf oder ungültiges Argument
Wäre schön wenn das mit .Send gehen würde
Gruß Ralf
Anzeige
AW: Bereich als E-Mail versenden
08.09.2022 07:39:33
Volti
Hallo Ralf,
den SEND-Befehl hast Du aber als letztes, also nach dem Einfügen, ergänzt!?
Gruß Karl-Heinz
AW: Bereich als E-Mail versenden
08.09.2022 09:42:02
Ralf
Hallo.
Habe das so geändert,leider ohne Erfolg.

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ß Ralf
Anzeige
AW: Bereich als E-Mail versenden
08.09.2022 11:24:07
Ralf
Habe es hin bekommen.
AW: Bereich als E-Mail versenden
08.09.2022 13:23:39
Volti
Sehr gut...
Das.Diplay musste schon bleiben, sonst fügt er es m.E. nicht ein.
Oder wie hast du es sonst hinbekommen?
Gruß KH
AW: Bereich als E-Mail versenden
08.09.2022 22:08:00
Ralf
Hallo Karl Heinz,
es hat dann doch einfach funktioniert.
Gruß Ralf
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Bereich aus Excel per E-Mail versenden


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Neues Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (deineDatei.xlsm)" und wähle Einfügen > Modul.

  3. 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
  4. Anpassen der Parameter: Stelle sicher, dass die Parameter wie Betreff, Empfänger und Kopie korrekt definiert sind.

  5. Makro ausführen: Drücke F5, um das Makro auszuführen.


Häufige Fehler und Lösungen

  • Laufzeitfehler 5: Dieser Fehler tritt auf, wenn du den .Send Befehl vor dem Einfügen des kopierten Bereichs ausführst. Achte darauf, dass .Display oder .Send erst nach dem Paste-Befehl kommt.
  • Falsche Zellreferenzen: Überprüfe, ob die Zellreferenzen für Betreff, Empfänger und CC korrekt sind.

Alternative Methoden

  • RangeToHTML: Eine gängige Methode, um einen Bereich als HTML-Tabelle zu versenden. Diese Methode ist besonders nützlich, wenn du eine formatierte Tabelle in der E-Mail haben möchtest.
  • Copy-Methode: Diese Methode kopiert einen Bereich direkt und fügt ihn in die E-Mail ein, was die einfache Einbindung von Excel-Daten ermöglicht.

Praktische Beispiele

  1. 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
  2. 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

Tipps für Profis

  • Mehrere E-Mail-Adressen: Um mehrere E-Mail-Adressen aus Excel in Outlook zu kopieren, kannst du die Adressen in einer Zelle durch Semikolons trennen.
  • Dateipfad als Link in die E-Mail einfügen: Verwende "<a href='file://deinDateipfad'>Link</a>", um einen Dateipfad als klickbaren Link in die E-Mail einzufügen.

FAQ: Häufige Fragen

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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige