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

Bereich aus Excel per Mail versenden

Bereich aus Excel per Mail versenden
05.07.2023 10:50:01
Lilli

Hallo Zusammen,

ich habe hier im Archiv gesucht und bin zum Teil und zum Glück fündig geworden.
Ich suche bitte eine Lösung, wo ich einen Bereich in Excel per Outlook versenden kann.

Den Code, den ich im Archiv gefunden habe:

Sub Excel_FixRange_via_Outlook_Senden()
    Dim OutApp As Object, Mail As Object, i
    Dim Nachricht
    'Verweis auf "Microsoft Forms 2.0 Object Library" aktivieren !!
    'sonst geht es nicht
    'Dataobject wird gebraucht wegen der Zwischenablage
    Dim ClpObj As DataObject
    Set ClpObj = New DataObject
    Set OutApp = CreateObject("Outlook.Application")
    Set Nachricht = OutApp.CreateItem(0)
    'Excelbereich der versendet werden soll
    'Bereich wird in die Zwischenablage kopiert
    Range("A1:A5").Copy
    For i = 1 To 3
    With Nachricht
        .Subject = "Betreffzeile Header"
        'Zwischenablage wird eingefügt
        ClpObj.GetFromClipboard
        .Body = ClpObj.GetText(1)
        .To = "irgendwer@irgendein-provider.de"
        'Hier wird die Mail angezeigt
        .Display
        'Hier wird die Mail gleich in den Postausgang gelegt
        .Send
    End With
    Next i
    Set OutApp = Nothing
    Set Nachricht = Nothing
End Sub


Ich bräuchte bitte einige Ergänzungen.
a) Der Betreff soll aus der Zelle G3 bzw. ich habe es betreff.zelle genannt.
b) mit dem Code bekomme ich nur den Inhalt, leider nur als Text. Aber ich möchte gerne, dass die Tabelle so wie sie ist mit all die Formatierung übertragen wird.
c) ich möchte in Zelle H3 bzw. die benannte Zelle sende.termin Datum und Uhrzeit schreiben, wann es versendet werden soll.
d) Der Empfänger soll bitte auch aus eine Zelle kommen. I3 bzw. ziel.adresse

Vielen lieben Dank für die Hilfe und für die Mühe im Voraus.

Liebe Grüße,
Lilli

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

Betreff
Datum
Anwender
Anzeige
AW: Bereich aus Excel per Mail versenden
05.07.2023 11:35:44
volti
Hallo Lilli,

ich würde Dir eine HTML-Mail dafür empfehlen.
Grundsätzlich gibt es mehrere Möglichkeiten Bilder oder Tabellen in eine Mail zu bekommen.
Mit dem u.a. Codebeispiel wird ein Tabellenbereich als Tabelle eingefügt. Ginge natürlich auch als Bild usw.
Besonderheit hier: als Platzhalter für den Zeilenumbruch habe ich das Zeichen 182 verwendet, welches später durch den HMTL-Tag <br> ersetzt wird.

In diesem Thread hier wird auch noch mal eine Möglichkeit via Range2HTML aufgezeigt.
https://www.herber.de/forum/cgi-bin/call_thread.pl?index=1932621

Code:


Sub Mail_erstellen() Dim sMailtext As String, WSh As Worksheet Set WSh = ActiveSheet ' ThisWorkbook.Sheets("balaba") With CreateObject("Outlook.Application").CreateItem(0) .BodyFormat = 2 ' HTML-Format .To = WSh.Range("I3").Value ' Empfänger .CC = "" .Subject = WSh.Range("G3").Value ' Betreff .Getinspector.Display ' Hole Signatur sMailtext = "Hallo,¶¶" _ & "anbei sende ich Ihnen die Daten:¶" .htmlbody = Replace(sMailtext, "", "<br>") & "<br>" & .htmlbody WSh.Range("A1:A5").Copy ' Bereich kopieren, ggf. Tabelle anpassen With .Getinspector.WordEditor.Application.Selection .Start = (Len(sMailtext) - 1) ' Grafik Einfügestelle, ggf. mit Position spielen .Paste ' Bereich in Mail einfügen End With WSh.Range("H3").Value = Now() & " Uhr" End With End Sub

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



Anzeige
AW: Bereich aus Excel per Mail versenden
05.07.2023 14:05:49
Lilli
Hallo Karl-Heinz,

vielen Dank für den Code. Bei mir kommt die Fehlermeldung: Microsoft Visual Basic for Application X 400,
was ich leider nichts darunter vorstellen kann.

Ich versuche gleich den Link, den Du mir zugemailt hast zu probieren.

Was muss ich an dem Teil ändern, damit das Makro der kopierte Inhalt nicht nur als Text einfügt?

   .Body = ClpObj.GetText(1)
Vielen Dank für Deine Mühe im Voraus.

Liebe Grüße,
Lilli


AW: Bereich aus Excel per Mail versenden
05.07.2023 14:47:04
volti
Hallo Lilli,

---Was muss ich an dem Teil ändern, damit das Makro der kopierte Inhalt nicht nur als Text einfügt?---
Dim ClpObj As DataObject
Set ClpObj = New DataObject
ClpObj.GetFromClipboard
.body = ClpObj.GetText(0)


Für Dein Anliegen diesen code entfernen, er funktioniert nur für Text.

Ggf. durch diesen code ersetzen (ungetestet)...
     .Display
     With .Getinspector.WordEditor.Range
          .Collapse (1)
          .Paste
     End With
Gruß Karl-Heinz


Anzeige
AW: Bereich aus Excel per Mail versenden
06.07.2023 10:55:02
Lilli
Hallo Karl-Heinz,

ich habe von Deine Seite bzw. von den Link, was Du gepostet hast folgenden Code genommen und es hat super funktioniert.

Sub MailErstellen()
' Sendet Mail mit integriertem Bereich als Bereich mit Signatur
  Dim WSh As Worksheet
  Dim sMailtext As String
  Dim sBer As String
  
  sBer = "mail.druck.bereich"                       ' Kopierbereich
  Set WSh = ThisWorkbook.Sheets("MailVersand")        ' Blatt mit Maildaten
  
  WSh.Range(sBer).Copy                              ' Bereich kopieren
  
  With CreateObject("Outlook.Application").CreateItem(0)
      .BodyFormat = 2                               ' 2=HTML-Format, 3=Richtext
      .Subject = WSh.Range("betreff.zelle")         ' Betreff
      .To = "ziel.adresse" ' Empfänger
      .CC = "ziel.adresse.2" ' Kopie CC
'      sMailtext = "Hallo,¶Ihre Daten:¶¶"             ' Mailbodytext
'      sMailtext = Replace(sMailtext, "¶", vbLf)     ' Umbrüche einfügen
      .Getinspector                                 ' Signatur holen
      .htmlbody = Replace(sMailtext, vbLf, "
") & .htmlbody .Display With .Getinspector.WordEditor.Application.Selection .Start = Len(sMailtext): .Paste ' Grafik in Mail einfügen End With End With End Sub
zwei Sachen funktionieren noch nicht so ganz ist:
Die Empfängeradresse möchte ich gerne aus eine Zelle entnehmen: aus G5 oder ziel.adresse
und die CC Empfängeradresse soll auch aus eine Zelle sein: aus G6 oder ziel.adresse.2

was für mich noch wichtig wäre, dass der Absendezeit aus eine Zelle ist: G8 oder sende.termin

Vielen Dank für Deine Mühe im Voraus.

liebe Grüße,
Lilli :)


Anzeige
AW: Bereich aus Excel per Mail versenden
06.07.2023 11:27:15
Lilli
Besteht vielleicht auch die Möglichkeit einen Sendedatum und Uhrzeit automatisch einzutragen, wenn eine Mail gesendet wurde?

in der Spalte AA10 bis AA210 stehen die Positionen von den Eintragung. in der Spalte AZ soll das Datum eingetragen werden, wenn eine Mail gesendet worden ist.

In der Mailversand Tabelle ziehe ich die Daten aus der Daten-Tabelle, damit ich die Daten untereinander habe. Das heißt, dass die Position von der Zeile ist schon durch die Spalte AA10 ... angegeben.
Das Makro soll nach dem Versand in der Spalte AZ Datum und Uhrzeit eingetragen werden.

Ich kann die Tabelle nicht mehr posten, weil so viele Daten darin sind. Notfalls muss ich die Tabelle neu erstellen.

Vielen Dank noch für die Mühe im Voraus.

Liebe Grüße
Lilli


Anzeige
AW: Bereich aus Excel per Mail versenden
06.07.2023 14:36:36
volti
Hallo Lilli,

die Empfänger kannst Du doch genauso eintragen, wie Du es beim Betreff gemacht hast, mit Range()
Das Beispiel mit dem Eintrag der Versendezeit hatte ich ja schon mal gezeigt. Jetzt ist es noch mal drin.
Allerdings kann ich in Spalte "AZ" nichts eintragen, es muss schon eine Zelle sein. Deine weiteren Ausführungen habe ich nicht verstanden.

Code:


Sub MailErstellen() ' Sendet Mail mit integriertem Bereich als Bereich mit Signatur Dim WSh As Worksheet Dim sMailtext As String Set WSh = ThisWorkbook.Sheets("MailVersand") ' Blatt mit Maildaten If CDate(WSh.Range("sende.termin").Value) >= Now() Then Exit Sub WSh.Range("mail.druck.bereich").Copy ' Bereich kopieren With CreateObject("Outlook.Application").CreateItem(0) .BodyFormat = 2 ' 2=HTML-Format, 3=Richtext .Subject = WSh.Range("betreff.zelle").Value ' Betreff .To = WSh.Range("ziel.adresse").Value ' Empfänger .CC = WSh.Range("ziel.adresse.2").Value ' Kopie CC ' sMailtext = "Hallo,¶Ihre Daten:¶¶" ' Mailbodytext ' sMailtext = Replace(sMailtext, "¶", vbLf) ' Umbrüche einfügen .Getinspector.Display ' Signatur holen .htmlbody = Replace(sMailtext, vbLf, "") & .htmlbody With .Getinspector.WordEditor.Application.Selection .Start = Len(sMailtext): .Paste ' Grafik in Mail einfügen End With WSh.Range("AZ10").Value = Now() & " Uhr" ' Sendeuhrzeit eintragen End With End Sub

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



Anzeige
AW: Bereich aus Excel per Mail versenden
07.07.2023 17:17:26
Lilli
Hallo Karl-Heinz,

ich habe Dein Code kopiert und genau so eingefügt. Bevor der Makro startet bekomme ich die Fehlermeldung:
microsoft visual basic for applications 400 X
ich weiß nicht, was ich da falsch gemacht habe, dass so ein Fehler entsteht.

Liebe Grüße,
Lilli


AW: Bereich aus Excel per Mail versenden
07.07.2023 20:54:19
Volti
Hallo Lilli,
Zu dem Fehler kann ich leider ohne Datei nichts sagen.
Kenn ich nicht und kommt bei mir nicht vor.

Gruß KH


Anzeige
AW: Bereich aus Excel per Mail versenden
05.07.2023 11:58:05
volti
Hallo Lilli,

vielleicht noch eine Erklärung zu Deinem Code....
'Zwischenablage wird eingefügt
ClpObj.GetFromClipboard
.Body = ClpObj.GetText(1)


GetText(1) holt Daten aus der Zwischenablage, wobei die 1 = CF_TEXT für nur Text steht.
Es gibt noch andere Formate, die mir aber noch nie erfolgreich geglückt sind.

Gruß KH

333 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige