Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1852to1856
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
Inhaltsverzeichnis

Screenshot in Mail einfügen

Screenshot in Mail einfügen
10.11.2021 14:18:31
Tamás
Ich hatte vor einiger Zeit mal nach Hilfe zum Einfügen eines Screenshots aus einer Excel Datei in eine Outlook Mail gefragt. Mir wurde seinerzeit auch ganz hervorragend geholfen. Hier der link zum archivierten Thread: https://www.herber.de/forum/cgi-bin/callthread.pl?index=1796018
Allerdings ist nun ein Problem aufgetreten.
Es geht dabei speziell um das skalieren des Screenshots in der Outlook Mail. Das Problem dabei ist dass wir ab heute mit einer neuen Signatur arbeiten die ebenfalls Grafiken enthält. Der Screenshot soll ja auch eine bestimmte Breite skaliert werden, das macht das Makro nun aber auch für die Grafiken in der Signatur. Das ist natürlich nicht erwünscht.
Wie muss ich denn den Code anpassen damit die Grafiken in der Signatur unverändert beliben?
hier der Code der bisher tadellos funktioniert hat:

Sub SCREENSHOT_MAIL()
'Sendet Mail mit integriertem Bereich als Bild mit Signatur
Dim sMailtext As String, sDateiname As String
Dim iEinf As Integer, oShp As Object
Dim WSh1 As Worksheet, WSh2 As Worksheet
Dim sBetreff As String
Set WSh1 = Sheets("Mailversand")           'Blatt referenzieren
Set WSh2 = Sheets("Ausgabe")               'Blatt referenzieren
sBetreff = "Screenshot " & WSh2.Range("K4").Value
sDateiname = "C:\Temp\Screenshot " & WSh2.Range("K4").Value & ".pdf"
Sheets("Quelle").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
sDateiname, _
Quality:=xlQualityStandard, IncludeDocProperties:=False, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
On Error Resume Next
Do
WSh2.Range("A1:Y36").CopyPicture _
Appearance:=xlScreen, Format:=xlBitmap   'Bereich kopieren, ggf. xlPicture
If Err.Number = 0 Then Exit Do           'Bei Problemen
Err.Clear                                'mehrfach versuchen
Loop
On Error GoTo 0
With CreateObject("Outlook.Application").CreateItem(0)
.BodyFormat = 2                           '2=HTML-Format, 3=Richtext
.Subject = sBetreff                       'Betreff"
.To = WSh1.Range("B3").Value              'Empfänger
.Cc = WSh1.Range("B4").Value              'Kopie
sMailtext = "Hallo," & vbLf & "hier die Daten" & vbLf
.Getinspector:                            'Signatur holen
.htmlbody = Replace(sMailtext, vbLf, "
") & .htmlbody .Display iEinf = Len(sMailtext) 'Grafik Einfügestelle, ggf. justieren With .Getinspector.WordEditor.Application.Selection .Start = iEinf: .End = iEinf .Paste 'Grafik in Mail einfügen End With For Each oShp In .Getinspector.WordEditor.InlineShapes oShp.Width = 300 'Grafik skalieren Next oShp 'Anlage dran .Attachments.Add sDateiname End With End Sub

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Screenshot in Mail einfügen
10.11.2021 14:25:26
Klaus
Hi Tamás,
du verschickst doch im HTML Format. Speichere das Bild statt es zu kopieren und binde es als HTML-Code ein.
Ich kann morgen einen Beispiel Code dazu posten, heute komm ich nicht mehr dazu - bis dahin ein C&P meines Screenshottools, vielleicht kannst du es ja selber umschreiben.

Sub Range_To_Image(mySheet As Worksheet, myAddress As String, myPath)
Dim objPict As Object, objChrt As Chart
Dim rngImage As Range, strFile As String
With mySheet
.Activate
Set rngImage = .Range(myAddress)
rngImage.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
.PasteSpecial Format:="Bitmap", Link:=False, DisplayAsIcon:=False
Set objPict = .Shapes(.Shapes.Count)
strFile = myPath
objPict.Copy
Set objChrt = .ChartObjects.Add(1, 1, objPict.Width + 8, objPict.Height + 8).Chart
ActiveSheet.ChartObjects(Replace(objChrt.Name, ActiveSheet.Name & " ", "")).Activate
' objChrt.Activate
ActiveChart.Paste
objChrt.Export strFile
objChrt.Parent.Delete
objPict.Delete
End With
ErrExit:
Set objPict = Nothing
Set objChrt = Nothing
Set rngImage = Nothing
End Sub
Sub Outlook()
Call Range_To_Image(Tabelle1, "AD2:AQ9", "C:\TEMP\MEIN_Bild.gif")
sText = ""
sText = sText & "Hallo Kollegen*innen,[br]"
sText = sText & "anbei die heutigen Zahlen, Stand " & Format(Now, "DD.MM. hh:mm") & "[br]"
sText = sText & "[b][font size = ""+3""] Tagesübersicht[/b][/font][br]"
sText = sText & "[img src = ""C:\TEMP\MEIN_Bild.gif"">[br]"
End Sub
Statt [ und ] natürlich die Größer/Kleiner Klammern verwenden.
LG,
Klaus M.
offen, da nicht gelöst
Anzeige
AW: Screenshot in Mail einfügen
10.11.2021 14:50:35
Karl-Heinz
Hallo Tamás,
habe gerade keinen Zugriff auf Outlook zum Testen, aber vielleicht klappt ja dieses hier:
With .Getinspector.WordEditor.Application.Selection
    .Start = iEinf: .End = iEinf
    .Paste                                    ' Grafik in Mail einfügen
    .width = 300
End With
oder so
With .Getinspector.WordEditor.Application.Selection
    .Start = iEinf: .End = iEinf
    .Paste                                    ' Grafik in Mail einfügen
End With
Selection.width = 300
Gruß
Karl-Heinz
Anzeige
AW: Screenshot in Mail einfügen
11.11.2021 07:45:13
Tamás
Hallo Karl-Heinz,
ich habe beide Versionen versucht, leider wird bei beiden die Größe des Bildes nicht angepasst.
Gruß Tamás
AW: Screenshot in Mail einfügen
11.11.2021 09:29:20
volti
Moin,
man könnte ggf. die nicht zu skalierenden Bilder ausklammern.
Lass Dir dazu einmal per Debug.Print alle Namen der Shapes ausgeben und passe u.a. Makrovorschlag an:
For Each oShp In .Getinspector.WordEditor.InlineShapes
    Debug.Print oShp.Name
    If oShp.Name <> "MeineSig" And oShp.Name <> "Signaturbild" Then oShp.WIDTH = 300
Next oShp
Gruß Karl-Heinz
Anzeige
AW: Screenshot in Mail einfügen
11.11.2021 11:59:25
Tamás
Hallo Karl-Heinz,
bereits bei der Zeile

Debug.Print oShp.Name
kommt bei Ausführung des Makros ein Laufzeitfehler:

Laufzeitfehler '438':
Objekt unterstützt diese Eigenschaft oder Methode nicht
Gruß Tamás
AW: Screenshot in Mail einfügen
11.11.2021 12:46:52
volti
Hallo Tamás,
ist für mich auch neu und ich kann es leider z.Zt. nicht testen:
Hier noch ein Versuch ohne Schleife über den Index, da Namen nicht unterstützt werden:
' Index ausprobieren
.Getinspector.WordEditor.InlineShapes(0).WIDTH = 300
Gruß KH
Anzeige
AW: Screenshot in Mail einfügen
11.11.2021 08:05:56
Tamás
Halo Klaus M.,
das Ändern der [ und ] in die Größer/Kleiner Klammer führt zu einer Fehlermeldung:

Fehler beim Kompilieren:
Erwartet: Zeilennummer oder Sprungmarke oder Anweisung oder Anweisungsende
Gruß Tamás
AW: Screenshot in Mail einfügen
11.11.2021 08:16:07
Klaus
Hi Tamás.
zeigst du einmal deinen Code? Bitte als UPLOAD, nicht in den Beitrag gepostet da hier im Forum HTML darzustellen nur bedingt möglich ist . Bin mir sicher dass ist nur ne Kleinigkeit.
LG,
Klaus
AW: Screenshot in Mail einfügen
11.11.2021 09:39:16
volti
Hallo Klaus,
Tipp, falls nicht bekannt...
Ersetze die spitzen Klammern durch "<"= & lt; und ">"= & gt;, (ohne Leerezeichen) dann wird es korrekt angezeigt und der Adressat muss keine Ersetzungen mehr machen.
PS: In HTML kann man auch das einfache Füßchen verwenden.
sText = sText & "<img src = 'C:\TEMP\MEIN_Bild.gif' width=300><br>"
Gruß
Karl-Heinz
Anzeige
AW: Screenshot in Mail einfügen
11.11.2021 10:21:24
Klaus
Hallo Karl-Heinz,
lt und gt kann ich mir nie merken! Ich weiss, "lesser" und "greater" - aber in 5 minuten, wenn der nächste HTML Beitrag kommt, hab ichs schon wieder vergessen :-)
Dass mit dem einfachen Füsschen ' statt dem Gänsefuß " wusste ich aber noch nicht. Super, das macht meinen Code gleich wieder ein kleines Stück lesbarer. Da habe ich etwas neues gelernt, vielen Dank!
LG,
Klaus M.

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige