Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Body überschreibt Signatur

Forumthread: VBA Body überschreibt Signatur

VBA Body überschreibt Signatur
03.12.2019 21:58:46
Roger
Guten Abend Body überschreibt immer meine Signatur... gibt es hier eine Lösung dazu?
Sub PDFundSenden()
ChDir "C:\Users\Admin\Desktop"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\Admin\Desktop\Bestellung.pdf"
Dim Outlook As Object
Dim OutlookMailItem As Object
Dim myAttachments As Object
Set OutlookApp = CreateObject("Outlook.application")
Set OutlookMailItem = OutlookApp.CreateItem(0)
Set myAttachments = OutlookMailItem.Attachments
With OutlookMailItem
.GetInspector.Display
olOldBody = .HTMLBody
.To = Range("O25")
.CC = Range("O26")
.Subject = Range("O28")
.Body = "Hoi Ruedi" & vbCrLf & vbCrLf & "Die Bestellung findest Du im Anhang." & vbCrLf &   _
_
vbCrLf & "Freundlichen Grüsse" & vbCrLf & vbCrLf & "Roger Meier" & vbCrLf & "Meier Delivery  _
at Box"
myAttachments.Add "C:\Users\Admin\Desktop\Bestellung.pdf"
'send
.Display
End With
Set OutlookApp = Nothing
Set OutlookMailItem = Nothing
End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Body überschreibt Signatur
04.12.2019 06:01:35
Torsten
Hallo Roger,
mit der Zeile
olOldBody = .HTMLBody

sicherst du dir ja schon richtig deine Signatur in eine Variable. Der Email Body der zu der Zeit nur aus deiner Signatur besteht, wird mit
.Body = "Hoi Ruedi" & vbCrLf & vbCrLf & "Die Bestellung findest Du im Anhang." & vbCrLf &   _
_
vbCrLf & "Freundlichen Grüsse" & vbCrLf & vbCrLf & "Roger Meier" & vbCrLf & "Meier Delivery  _
_
at Box"

ueberschrieben. Was du nur tun musst ist nach ein paar weiteren Zeilenumbruechen deine Signatur aus der Variablen wieder anzuhaengen. Etwa so:

.Body = "Hoi Ruedi" & vbCrLf & vbCrLf & "Die Bestellung findest Du im Anhang." & vbCrLf &   _
_
vbCrLf & "Freundlichen Grüsse" & vbCrLf & vbCrLf & "Roger Meier" & vbCrLf & "Meier Delivery  _
_
at Box" & vbCrLf & vbCrLf & olOldBody

Gruss Torsten
Anzeige
AW: VBA Body überschreibt Signatur
05.12.2019 15:06:35
Roger
Hallo
leider stellt die Forums-Software den Vba-Code nicht richtig dar, könntest Du mir deshalb das Ganze in eine txt-Datei packen?
Gruess
AW: VBA Body überschreibt Signatur
04.12.2019 06:21:24
Luschi
Hallo Roger,
- warum bleibst Du nicht im 1. Thread?
- eine Beatwortung mit 'Leider funktioniert es nicht... hast du noch eine Variante?'
- bringt Niemanden weiter
- habe noch mal getesten und das ist das funktionierende Resultat:

Sub PDFundSenden()
Dim OutlookApp As Object
Dim OutlookMailItem As Object
Dim myAttachments As Object
Dim olOldHtmlBody As String, UserPfad As String, UserDatei As String
Const olBodyFormat As Integer = 2    ''Html-Format
''Desktop-Pfad des angemeldeten Benutzers
UserPfad = Environ("UserProfile") & "\Desktop"
UserDatei = UserPfad & "\Bestellung_" & Format(Date, "yyyy-mm-dd") & ".pdf"
'unberdingt setzen, da Lw 'C' nicht Standard sein mu?
ChDrive Left(UserPfad, 1)
ChDir UserPfad
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=UserDatei
'warten, bis Pdf-Datei erstellt
Do While Dir(UserDatei, vbNormal) = ""
DoEvents
Loop
''late binding - kein VCba-Verweis auf M$ Outlook xx.0 Object Library erforderlich
Set OutlookApp = CreateObject("Outlook.application")
Set OutlookMailItem = OutlookApp.CreateItem(0)
Set myAttachments = OutlookMailItem.Attachments
With OutlookMailItem
.BodyFormat = olBodyFormat
.GetInspector.Display
olOldHtmlBody = .HTMLBody
.To = Range("O25")
.CC = Range("O26")
.Subject = Range("O28")
'bei HTMLBody mu? vbCrLF gegen "
" ausgetauscht werden .HTMLBody = "Hoi Ruedi" & "
" & "Die Bestellung findest Du im Anhang." & _ "
" & "Freundlichen Gr?sse" & "
" & "Roger Meier" & "
" & _ "Meier Delivery at Box" & "
" & olOldHtmlBody myAttachments.Add UserDatei 'send .Display End With Set OutlookApp = Nothing Set OutlookMailItem = Nothing End Sub
Gruß von Luschi
aus klein-Paris
Wenn Du eine andere als die Outlook-Standard.Signatur verwenden willst, dafür gibt es auch schon Lösungen.
Anzeige
AW: VBA Body überschreibt Signatur
04.12.2019 06:28:12
Luschi
Hallo Rogewr,
leider stellt die Forums-Software den Vba-Code nicht richtig dar, deshalb hier noch mal das Ganze in eine txt-Datei gepackt:
https://www.herber.de/bbs/user/133575.txt
Gruß von Luschi
aus klein-Paris
AW: VBA Body überschreibt Signatur
05.12.2019 15:02:04
Roger
Hallo Luschi
Vielen Dank ! es funktioniert einwandfrei.
Beste Grüsse
Roger
Anzeige
;
Anzeige

Infobox / Tutorial

VBA Body überschreibt Signatur in Outlook-E-Mails


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11 in Excel, um den VBA-Editor zu öffnen.

  2. Neues Modul erstellen: Klicke im Projektfenster mit der rechten Maustaste auf VBAProject (DeineDatei.xlsx), gehe zu Einfügen und wähle Modul.

  3. Code einfügen: Kopiere den folgenden Code in das neue Modul:

    Sub PDFundSenden()
       Dim OutlookApp As Object
       Dim OutlookMailItem As Object
       Dim myAttachments As Object
       Dim olOldHtmlBody As String
       Const olBodyFormat As Integer = 2 ' Html-Format
    
       Set OutlookApp = CreateObject("Outlook.application")
       Set OutlookMailItem = OutlookApp.CreateItem(0)
       Set myAttachments = OutlookMailItem.Attachments
    
       With OutlookMailItem
           .GetInspector.Display
           olOldHtmlBody = .HTMLBody
           .To = Range("O25")
           .CC = Range("O26")
           .Subject = Range("O28")
           .HTMLBody = "Hoi Ruedi" & "<br>" & "Die Bestellung findest Du im Anhang." & _
                        "<br>" & "Freundlichen Grüsse" & "<br>" & "Roger Meier" & "<br>" & _
                        "Meier Delivery at Box" & "<br>" & olOldHtmlBody
           myAttachments.Add "C:\Users\Admin\Desktop\Bestellung.pdf"
           .Display
       End With
    
       Set OutlookApp = Nothing
       Set OutlookMailItem = Nothing
    End Sub
  4. Anpassen des Codes: Stelle sicher, dass die Pfade und die Zellreferenzen (z.B. Range("O25")) korrekt sind.

  5. Ausführen: Führe das Makro aus, um eine E-Mail mit dem gewünschten Body und der Signatur zu erstellen.


Häufige Fehler und Lösungen

  • Fehler: Signatur wird nicht angezeigt: Stelle sicher, dass du die HTMLBody-Eigenschaft verwendest und deine Signatur nach dem Text anhängst.

    .HTMLBody = "Dein Text..." & "<br>" & olOldHtmlBody
  • Fehler: E-Mail wird nicht gesendet: Wenn du das Makro zum Testen verwendest, verwende .Display, um die E-Mail zu sehen, bevor du sie sendest.


Alternative Methoden

  • Verwendung von .Body statt .HTMLBody: Beachte, dass .Body für reinen Text verwendet wird, während .HTMLBody für formatierte E-Mails verwendet wird. Um die Signatur zu behalten, solltest du immer .HTMLBody verwenden.

  • Erstellen einer benutzerdefinierten Signatur: Wenn du eine andere Signatur als die Outlook-Standard verwenden möchtest, kannst du diese in einer Variablen speichern und an den Body anhängen.


Praktische Beispiele

Hier ist ein Beispiel, wie du eine E-Mail mit einer Signatur in HTML formatieren kannst:

.HTMLBody = "Hallo," & "<br>" & "Hier ist deine Bestellung." & "<br>" & olOldHtmlBody

Verwende <br> für Zeilenumbrüche in der HTML-Formatierung.


Tipps für Profis

  • Late Binding verwenden: Wenn du auf die Outlook-Bibliothek verzichten möchtest, kannst du CreateObject für eine flexiblere Nutzung verwenden.

  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um potenzielle Laufzeitfehler beim Versenden von E-Mails zu handhaben.

On Error Resume Next
'... deines Codes ...
If Err.Number <> 0 Then
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
End If

FAQ: Häufige Fragen

1. Wie kann ich meine Signatur formatieren?
Du kannst HTML-Tags wie <b> für fett oder <i> für kursiv verwenden, um deine Signatur zu formatieren.

2. Was ist der Unterschied zwischen .Body und .HTMLBody?
.Body ist für einfachen Text, während .HTMLBody HTML-Formatierung unterstützt, was für E-Mails oft nützlich ist.

3. Wie kann ich die E-Mail direkt senden?
Ändere .Display in .Send, um die E-Mail direkt zu senden, ohne sie vorher anzuzeigen.

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