MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 09.02.2018, 07:51   #1
sirharlekin
Neuer Benutzer
Neuer Benutzer
Standard VBA - Diagramm aus Excel als Bild in Outlook und positonieren

Hallo zusammen,

eine Frage zum Erstellen von Outlook Mails per VBA und einfügen von Diagrammen als Bild.

Ich habe folgenden Code, welcher mir eine Mail mit Betreff und Body erstellt.

Code:

Sub Mail()

Dim olApp     As Object

Dim olOldBody As String
 Set ziel = Worksheets("Reporting")
     ziel.Activate

ActiveSheet.Shapes.Range(Array("Group 26")).Select
    Selection.Copy

Rem Email erstellen
Set olApp = CreateObject("Outlook.Application")

    With olApp.CreateItem(0)
        .GetInspector.Display
        .To = Workbooks(ThisWorkbook.name).Sheets("Reporting").Range("M109")
        .CC = Workbooks(ThisWorkbook.name).Sheets("Reporting").Range("M110")
        .Subject = Workbooks(ThisWorkbook.name).Sheets("Reporting").Range("M113")
        .htmlBody = Workbooks(ThisWorkbook.name).Sheets("Reporting").Range("M116")
         .Display
        SendKeys "{TAB}", True
        SendKeys "{TAB}", True
        SendKeys "{TAB}", True
        SendKeys "{TAB}", True
        SendKeys "{TAB}", True
        SendKeys "{DOWN}", True
        SendKeys "{DOWN}", True
        SendKeys "{DOWN}", True
        SendKeys "{DOWN}", True
        SendKeys "{END}", True
        SendKeys "{ENTER}", True
        SendKeys "^v", True
      '          .Attachments.Add "X:PLSARPL1-Procurement2_Reports_KPIsKPI18_rückständige Banfen EK" & Datei
      
       End With
    
    'Outlook.Application.Selection.Paste
'Application.CutCopyMode = False
      
End Sub

Ich habe hiermit zwei Probleme:

a) wenn ich einfüge per SendKeys "^v", True dann ist die Grafik oben links positioniert (über den Text eingefügt).

Füge ich jedoch per Rechtsklick -> Grafik ein, dann genau dort wo ich es möchte, nämlich unter dem Text. Wie kann ich das Einfügen als Grafik in Outlook am Ende des Bodys automatisieren?

b) Obwohl mein Body Code für mich in Ordnung aussieht, habe ich vor dem "Hallo" immer einen automatischen Tab eingefügt, so dass sich die Anrede verschiebt. Könnt ihr das erklären?

Anbei zwei Bilder, um den Sachverhalt zu verdeutlichen.


Viele Grüße,

Dominik
Angehängte Grafiken
Dateityp: jpg anrede.jpg (29,0 KB, 3x aufgerufen)
Dateityp: jpg vortext.jpg (41,9 KB, 6x aufgerufen)
sirharlekin ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.02.2018, 12:42   #2
Case_Germany
MOF User
MOF User
Tipp Nicht Sendkeys...

Hallo,

arbeite nicht mit "SendKeys", sondern nimm den Code von Ron de Bruin:

Mail chart or chart sheet as picture...

Servus
Case

__________________

VBA & VB.NET Blog
Case_Germany ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.02.2018, 15:03   #3
Beverly
MOF Guru
MOF Guru
Standard

Hi,

vielleicht hilft dir dieser Code:

Code:

Sub MailSenden()
   Dim objNachricht As Object
   Dim objMail As Object
   Dim strDiaBild As String
   strDiaBild = Environ$("temp") & Format(Now, "nnmmss") & ".jpg"
   DiaExportieren strDiaBild
   Set objMail = CreateObject("Outlook.Application")
   Set objNachricht = objMail.CreateItem(0)
   With objNachricht
       .To = "Deine@Mailadresse"
       .Subject = "Erinnerung"
       ' normaler Text + Tabellenausschnitt in HTML + Diagramm + weiterer normaler Text
       ' < br>< br> entspricht 2 Zeilenumbrüchen
       .HtmlBody = "Sehr geehrte Damen und Herren,< br>< br>" & _
            "Jetzt kommt ein Bild" & "< br>< br>< img src=" & strDiaBild & ">< br >< br>" & "Am Ende dann die Unterschrift"
       .ReadReceiptRequested = False
       .display
       '.send
   End With
   Set objNachricht = Nothing
   Set objMail = Nothing
   Kill strDiaBild
End Sub

Sub DiaExportieren(strBild)
    Dim chDiagramm As Chart     ' Variable für Diagramm als Objekt
'   Diagramm1 der aktiven Tabelle auf Variable schreiben
    Set chDiagramm = ActiveSheet.ChartObjects(1).Chart
'   Diagramm als JPG-Datei exportieren
    chDiagramm.Export Filename:=strBild, FilterName:="JPG"
End Sub

Beachte bitte, dass dir Leerzeichen vor br und vor img gelöscht werden müssen - das ist hier erforderlich, da der Code sonst als HTML-Code interpretiert und umgewandelt wird.


GrußformelBeverly's Excel - Inn

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.02.2018, 07:55   #4
sirharlekin
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Case, hallo Karin,

entschuldigt, dass ich mich erst nach dem Wochenende wieder melde.

Ich habe eure jeweiligen Codes probiert, sie funktionieren mit Diagrammen reibungslos. Da habe ich sogar die Wahl, ob in den Text platziert (Karin) oder als Anhang (case).

Mein Problem ist jedoch, dass ich das ursprüngliche Diagramm mit zwei Textfeldern zu einem "Shape" gruppiert habe, wodurch der Code entsprechend abbricht.

Im Anhang, wie mein "Diagramm" an sich aussieht.

Interessant finde ich, und das kann ich mir nicht erklären, dass ich auch andere Diagramme mit Textfeldern kombiniert habe und bei einigen (ich testete die Nummern durch) läuft der Code trotzdem. Hier ist das Textfeld jedoch einfach über dem Diagramm ohne Gruppierung. Gibt es da einen entsprechenden Trick beim einfügen (vor oder hinter den Text, eventuell anders Gruppieren, etc.)

Falls ich mich unklar ausgedrückt habe, bitte meldet euch entsprechend.


Viele Grüße,

Dominik
Angehängte Grafiken
Dateityp: jpg shape.jpg (42,4 KB, 4x aufgerufen)
sirharlekin ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.02.2018, 08:32   #5
Beverly
MOF Guru
MOF Guru
Standard

Hi Dominik,

in dem Fall musst du das Shape exportieren:

Code:

Sub DiaExportieren(strBild As String)
    Dim chrDia As ChartObject
    Application.ScreenUpdating = False
    ActiveSheet.Shapes("Gruppierung").CopyPicture Appearance:=xlScreen, Format:=xlPicture  '<== Name anpassen!!
    Set chrDia = ActiveSheet.ChartObjects.Add(0, 0, ActiveSheet.Shapes(1).Width, ActiveSheet.Shapes(1).Height)
    With chrDia.Chart
        ' erforderlich bei Excel2010, da Diagrammfläche automatisch mit Rahmen erstellt wird
        .Parent.ShapeRange.Line.Visible = msoFalse
        ' bei Excel2016 muss die Diagrammfläche selektiert vor .Paste werden - andernfalls ist das Bild leer
        If Val(Application.Version) = 16 Then .ChartArea.Select
        .Paste
        .Export Filename:=strBild, FilterName:="JPG" ' andere Grafikformate sind möglich
    End With
    chrDia.Delete
    Set chrDia = Nothing
    Application.ScreenUpdating = True
End Sub

GrußformelBeverly's Excel - Inn

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.02.2018, 09:16   #6
Case_Germany
MOF User
MOF User
Standard

Hallo Dominik,

anbei ein Beispiel:

Servus
Case
Angehängte Dateien
Dateityp: xlsm Outlook_Diagramm_Chart_Gruppierung_Shape_in_Body.xlsm (28,5 KB, 2x aufgerufen)

__________________

VBA & VB.NET Blog
Case_Germany ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.02.2018, 09:32   #7
sirharlekin
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo ihr beiden,

ich habe das Bsp. von Case noch nicht angeschaut, habe jedoch noch eine Verständnisfrage.

Meine "Shape" in der Mail wird im Miniformat eingefügt (siehe Bild), wo kann ich hier die Maße entsprechend bestimmen?

/edit: Auch bei Case kommt die Shape nicht in der "Originalgröße" aus Excel nach Outlook.

Könnt ihr mir nochmal helfen?


Viele Grüße,

Dominik
Angehängte Grafiken
Dateityp: jpg mini.jpg (13,6 KB, 2x aufgerufen)

Geändert von sirharlekin (12.02.2018 um 09:45 Uhr). Grund: Nachtrag Test von Case Code
sirharlekin ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.02.2018, 09:51   #8
sirharlekin
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Ich antworte mir mal selbst.

Es ist erledigt, ich habe die vorgegebenen Höhen/Breiten Vorgaben rausgenommen.


Danke an alle.
sirharlekin ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:35 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.