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
Anzeige