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

VBA BODY und Signatur.BODY

Forumthread: VBA BODY und Signatur.BODY

VBA BODY und Signatur.BODY
24.04.2021 02:04:53
Marko
Hallo,
ich habe eine Frage zu folgendem Code, mit dem ich eine E-Mail mit Anhang erzeuge. Dieser Code funktioniert. Dann habe ich die Signatur aus meinem Outlook mit eingebaut. Diese wird angezeigt. Auch das funktioniert. Wenn die Signatur Signatur.BODY in der E-Mail angezeigt wird, ist jedoch der Text (BODY) nicht mehr da. Nehme ich "Signatur.BODY" wieder weg, erscheint die Signatur in einem für mich unbrauchbaren Format. Was mache ich falsch? Wie muss ich die Anordnung verändern, dass zuerst der Text und dann die Signatur erscheint. Vielen Dank für Eure Hilfe.

Sub EmailErzeugenLft_3()
Dim app   As Object
Dim file  As String
Dim isNew As Boolean
Dim olAPP As Object
Dim olOldBody As String
Dim strBody As String
Dim strSignatur As String
file = Sheets("Tabelle3").Range("L20").Text & ".pdf"
Sheets("Tabelle16").Range("A1:G61").ExportAsFixedFormat xlTypePDF, Environ("TEMP") & "\" & file
On Error Resume Next
Set app = GetObject(, "Outlook.Application")
If app Is Nothing Then
Set app = CreateObject("Outlook.Application")
isNew = True
End If
With app.CreateItem(0)
.To = Sheets("Tabelle3").Range("M17").Value
.CC = ""
.BCC = ""
.Subject = Sheets("Tabelle3").Range("L20").Value
.BODY = Sheets("Tabelle3").Range("M11") & strSignatur & vbCrLf & vbCrLf _
& Signatur.BODY
.GetInspector.Display
strSignatur = .BODY
.Attachments.Add Environ("TEMP") & "\" & file
.ReadReceiptRequested = True
.Display
End With
If isNew Then app.Quit
End Sub

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA BODY und Signatur.BODY
24.04.2021 06:48:43
Oberschlumpf
Hi Marco,
hier werden viele Möglichkeiten "durchgespielt". Vielleicht kannst du davon ja etwas für dich verwenden:
http://www.office-loesung.de/ftopic195750_0_0_asc.php
Mehr weiß ich aber auch nicht.
Ciao
Thorsten
Anzeige
Dankeschön
24.04.2021 09:54:38
Marko
Hallo Thorsten,
vielen Dank für den Link.
Gruß, Marko
AW: VBA BODY und Signatur.BODY
24.04.2021 08:01:25
mumpel
Was ist "Signatur.BODY", wo hast Du das deklariert? Ein Standard-Parameter ist das nicht. ".GetInspector.Display" musst Du zuerst aufrufen, dann die vorhandene Signatur in "strSignatur" zwischenspeichern, dann Deinen Text einfügen und diesem "strSignatur" (durch &-Verknüpfung) anfügen.
Sub EmailErzeugenLft_3()
 
    Dim app   As Object
    Dim file  As String
    Dim isNew As Boolean
    Dim olAPP As Object
    Dim olOldBody As String
    Dim strBody As String
    Dim strSignatur As String
       
    file = Sheets("Tabelle3").Range("L20").Text & ".pdf"
    Sheets("Tabelle16").Range("A1:G61").ExportAsFixedFormat xlTypePDF, Environ("TEMP") & "\" & file
    On Error Resume Next
    Set app = GetObject(, "Outlook.Application")
    If app Is Nothing Then
    Set app = CreateObject("Outlook.Application")
    isNew = True
    End If
 
  With app.CreateItem(0)
       .GetInspector.Display
        strSignatur = .htmlBody
       .To = Sheets("Tabelle3").Range("M17").Value
       .CC = ""
       .BCC = ""
       .Subject = Sheets("Tabelle3").Range("L20").Value
       .htmlBody = Sheets("Tabelle3").Range("M11") & "<br><br>" & strSignatur
       .Attachments.Add Environ("TEMP") & "\" & file
       .ReadReceiptRequested = True
    End With
    If isNew Then app.Quit
 
 End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung: René Holtz

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Anzeige
VBA Schrifttyp und Größe
24.04.2021 10:20:07
Marko
Hallo Mumpel,
Vielen Dank für Deine Nachricht. Stimmt "Signatur.BODY" habe ich nicht deklariert! Dein Code funktioniert. Um es perfekt hinzubekommen meine Bitte Dich. Ich benötige den Schrifttype "Arial" und Schriftgröße "11" für den .BODY Text .Kannst Du mir bitte die Textformatierung in den Code einbauen?
Gruß, Marko
Anzeige
AW: VBA Schrifttyp und Größe
24.04.2021 22:23:32
volti
Hallo Marko,
falls noch nicht gelöst, hier ein Beispiel für die HTML-Formatierung.
PS: Die Rettung der Signatur in eine Variable kannst Du Dir sparen, wenn der Bodytext mit einer Befehlskette (einem Zugriff) gesetzt wird.
Code:

[Cc][+][-]

Sub EmailErzeugenLft_3() Dim app As Object Dim file As String Dim isNew As Boolean Dim olAPP As Object Dim olOldBody As String Dim strBody As String Dim strSignatur As String file = Sheets("Tabelle3").Range("L20").text & ".pdf" Sheets("Tabelle16").Range("A1:G61").ExportAsFixedFormat xlTypePDF, Environ("TEMP") & "&bsol;" & file On Error Resume Next Set app = GetObject(, "Outlook.Application") If app Is Nothing Then Set app = CreateObject("Outlook.Application") isNew = True End If With app.CreateItem(0) .GetInspector.Display .To = Sheets("Tabelle3").Range("M17").Value .CC = "" .BCC = "" .Subject = Sheets("Tabelle3").Range("L20").Value .htmlbody = "<body style='font-family:Arial;font-size:11pt;color:#000000'>" _ & Sheets("Tabelle3").Range("M11") _ & "<br><br></body>" & .htmlbody .Attachments.Add Environ("TEMP") & "&bsol;" & file .ReadReceiptRequested = True End With If isNew Then app.Quit End Sub

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

Anzeige
Dankeschön
25.04.2021 12:28:02
Marko
Hallo Karl-Heinz.
vielen Dank auch an Dich. Jetzt werden die E-Mail's perfekt dargestellt. Super...
Gruß, Marko
;
Anzeige

Infobox / Tutorial

VBA BODY und Signatur in Outlook E-Mails


Schritt-für-Schritt-Anleitung

Hier ist eine einfache Schritt-für-Schritt-Anleitung, um eine E-Mail mit VBA zu erstellen, die sowohl einen Text als auch eine Outlook-Signatur enthält.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf „VBAProject (DeinWorkbookName)“ > „Einfügen“ > „Modul“.
  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub EmailErzeugenLft_3()
       Dim app As Object
       Dim file As String
       Dim isNew As Boolean
       Dim strSignatur As String
    
       file = Sheets("Tabelle3").Range("L20").Text & ".pdf"
       Sheets("Tabelle16").Range("A1:G61").ExportAsFixedFormat xlTypePDF, Environ("TEMP") & "\" & file
    
       On Error Resume Next
       Set app = GetObject(, "Outlook.Application")
       If app Is Nothing Then
           Set app = CreateObject("Outlook.Application")
           isNew = True
       End If
    
       With app.CreateItem(0)
           .GetInspector.Display
           strSignatur = .htmlBody
           .To = Sheets("Tabelle3").Range("M17").Value
           .Subject = Sheets("Tabelle3").Range("L20").Value
           .htmlBody = "<body style='font-family:Arial;font-size:11pt;color:#000000'>" & _
                       Sheets("Tabelle3").Range("M11").Value & "<br><br>" & strSignatur & "</body>"
           .Attachments.Add Environ("TEMP") & "\" & file
           .ReadReceiptRequested = True
           .Display
       End With
    
       If isNew Then app.Quit
    End Sub
  4. Passe die Zellreferenzen an deine Bedürfnisse an.

  5. Führe das Makro aus, indem du F5 drückst oder über das Menü „Ausführen“ wählst.


Häufige Fehler und Lösungen

  • Fehler: „Signatur.BODY ist nicht deklariert“

    • Lösung: Stelle sicher, dass du strSignatur korrekt deklariert und zugewiesen hast, bevor du sie im Body verwendest.
  • Fehler: Outlook-Signatur wird nicht richtig angezeigt.

    • Lösung: Verwende htmlBody anstelle von .BODY, um HTML-Formatierung zu unterstützen.

Alternative Methoden

Eine andere Methode, um die Outlook-Signatur in eine E-Mail einzufügen, ist die Verwendung von GetInspector und das Speichern der Signatur in einer Variable, bevor du den Körper der E-Mail setzt. Hier ist ein Beispiel:

With app.CreateItem(0)
    .GetInspector.Display
    strSignatur = .htmlBody
    .htmlBody = "Dein Text hier" & "<br><br>" & strSignatur
End With

Praktische Beispiele

Ein konkretes Beispiel für die Verwendung von vba body könnte sein, wenn du eine E-Mail mit einem PDF-Anhang und einer personalisierten Nachricht an mehrere Empfänger sendest.

.To = "email@example.com"
.Subject = "Dein Betreff"
.htmlBody = "Hallo,<br>Hier ist das angeforderte Dokument.<br><br>" & strSignatur

Tipps für Profis

  • Verwende HTML für Formatierung: Nutze htmlBody, um deinen E-Mail-Text zu formatieren. Dies ist besonders nützlich, wenn du spezielle Schriftarten oder Farben verwenden möchtest.
  • E-Mail-Body dynamisch gestalten: Du kannst die Inhalte des E-Mail-Bodys dynamisch aus verschiedenen Zellen in deinem Excel-Blatt ziehen, um die E-Mails zu personalisieren.

FAQ: Häufige Fragen

1. Wie kann ich die Schriftart und -größe im E-Mail-Body ändern? Du kannst die Schriftart und -größe im htmlBody mit CSS definieren, z. B. "<body style='font-family:Arial;font-size:11pt;'>...".

2. Was ist der Unterschied zwischen .BODY und .htmlBody? .BODY ist für einfachen Text ohne Formatierung, während .htmlBody HTML-Formatierung unterstützt.

3. Wie kann ich sicherstellen, dass die Outlook-Signatur nicht verändert wird? Speichere die Signatur in einer Variable, bevor du den E-Mail-Body setzt, um sicherzustellen, dass die Formatierung nicht verloren geht.

4. Welche Excel-Version benötige ich für diese VBA-Codes? Die Beispiele wurden in Excel 2016 getestet, sollten aber auch in neueren Versionen funktionieren.

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