Bild aus Excel per VBA in Outlook Mail?

2 Antworten

Hallo augsburgchris,

um ein Bild aus Excel in eine E-Mail einzufügen, könntest du das folgende VBA-Skript verwenden:

Sub EmailBild()

Dim OutApp As Object

Dim OutMail As Object

Dim rng As Range

Dim Chart As ChartObject

mathematica

Copy code
Set rng = Range("D100:Z104") 'Bild aus Excel erstellen Set Chart = ActiveSheet.ChartObjects.Add( _ Left:=rng.Left, _ Top:=rng.Top, _ Width:=rng.Width, _ Height:=rng.Height) Chart.Activate ActiveChart.ChartArea.Copy 'E-Mail erstellen und Bild einfügen Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(0) With OutMail .To = "Empfänger@beispiel.com" .Subject = "Bild aus Excel" .Attachments.Add Chart.Chart.Export("C:\Bild.png") .Display End With 'Bild aus Excel entfernen Chart.Delete
End Sub

Dieses Skript erstellt ein Chart-Objekt aus dem angegebenen Zellbereich, kopiert es in die Zwischenablage und fügt es als Anhang in die E-Mail ein.

Ich hoffe, dass dir das weiterhilft. Wenn du weitere Fragen hast, stehe ich gerne zur Verfügung.

Woher ich das weiß:Berufserfahrung

augsburgchris 
Beitragsersteller
 17.04.2023, 11:50

Hi danke schon mal aber es soll ja kein Chart aus dem Bereich werden (Dieses ist ja dann Leer. Ich möchte ja dem Bereich als Bild rauskopieren.

Bei .Attachments.Add Chart.Chart.Export ("C:\Bild.png") Hängt er sich aber ohnehin auf.

augsburgchris 
Beitragsersteller
 18.04.2023, 13:32
@augsburgchris

Das ist die finale Lösung:

Sub Versenden()
  Application.ScreenUpdating = False
  ActiveSheet.Range("D140:CP145").CopyPicture Appearance:=xlScreen, Format:=xlPicture
  With ActiveSheet.ChartObjects.Add(0, 0, Range("D140:CP145").Width, Range("D140:CP145").Height).Chart
   .Parent.Activate
   .Paste
   .Export "F:\Privat\test.JPG"
   .Parent.Delete
  End With
  Application.ScreenUpdating = True
  
  
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "Empfänger@beispiel.com"
.Subject = "Betreff"
.htmlbody = "Hallo zusammen, <br><br> Text <br><br><img src='F:\Privat\test.JPG'><br><br> Viele Grüße <br> Chris"
.Display
End With
End Sub

augsburgchris 
Beitragsersteller
 18.04.2023, 13:30

Hab es jetzt so gelöst.

Sub Versenden()
  Application.ScreenUpdating = False
  ActiveSheet.Range("D140:CP145").CopyPicture Appearance:=xlScreen, Format:=xlPicture
  With ActiveSheet.ChartObjects.Add(0, 0, Range("D140:CP145").Width, Range("D140:CP145").Height).Chart
   .Parent.Activate
   .Paste
   .Export "F:\Privat\test.JPG"
   .Parent.Delete
  End With
  Application.ScreenUpdating = True
  
  
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "Empfänger@beispiel.com"
.Subject = "Betreff"
.htmlbody = "Hallo zusammen, <br><br> Text <br><br><img src='F:\Privat\test.JPG'><br><br> Viele Grüße <br> Chris"
.Display
End With
End Sub
Suboptimierer  18.04.2023, 13:56
@augsburgchris

Das funktioniert aber nur, wenn das Bild beim Empfänger unter dem angegebenen Pfad zu finden ist. Es wird nicht der Mail angefügt (würde mich jedenfalls wundern).

Es kann so sein, dass das dir bewusst ist und es so gewollt ist. Ich wollte es nur erwähnt haben. So kann es sein, dass in deinen Tests alles passt, aber bei einem externen Empfänger es mau aussieht.

augsburgchris 
Beitragsersteller
 18.04.2023, 13:56
@Suboptimierer

Auf dem Handy wird das Bild angezeigt. Und das hat keine Konnektivität zum Firmenrechner.

Suboptimierer  18.04.2023, 14:00
@augsburgchris

In HTML gibt es nur Links zu Bildern.

Sie werden eingebettet. Die HTML-Seite kann ohne Interpreter keine bitweise gespeicherten Bilddaten halten und als Bild darstellen. Selbst wenn es inzwischen gehen sollte, so hast du nicht die Bilddaten im htmlbody stehen, sondern nur den Link.

augsburgchris 
Beitragsersteller
 18.04.2023, 14:01
@Suboptimierer

Aber wieso kann ich die Email dann auf mein Handy schicken und das Bild wird dort angezeigt?

Suboptimierer  18.04.2023, 14:03
@augsburgchris

Das weiß ich um ehrlich zu sein nicht. Ich kann es mir nur so erklären, dass Outlook sich automatisch einklinkt, das Bild liest und die Bitdaten des Bildes in der Mail versteckt.

Hast du auch auf dem Handy Outlook? Würde mich mal interessieren, ob andere Clients die Bildinformationen auch rücktransformieren können, also ob das ein etablierter Standard ist. Microsoft definiert ja gerne Standards.

Teste es auf jeden Fall noch einmal mit einem anderen Client (gmx, webmail, yahoo, gmail, ...)

augsburgchris 
Beitragsersteller
 18.04.2023, 14:06
@Suboptimierer

Nein verwende auf dem privaten Handy das Mailprogramm von t-online.de.

An die Hotmail-Adresse die ich über Samsung Mail abrufe geht es auch wenn ich auf "Bilder laden" drücke.