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

Forumthread: VBA E-Mail versenden mit Signatur

VBA E-Mail versenden mit Signatur
18.03.2019 13:43:38
Timo
Hallo zusammen,
ich hoffe ihr könnt mir nochmal helfen ;)
Ich habe folgende Codes (funktioniert soweit einwandfrei):
Modul1
Sub a(r&)
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Tabelle1")
Dim Ol As Object, OlCreate As Boolean
On Error Resume Next
Set Ol = GetObject(, "Outlook.Application")
If Err Then
Set Ol = CreateObject("Outlook.Application")
OlCreate = True
End If
Ol.Visible = True
With Ol.createitem(0)
.To = Ws.Cells(r, "A")
.CC = Ws.Cells(r, "B")
.BCC = Ws.Cells(r, "C")
.Subject = Ws.Cells(r, "D")
.Body = Ws.Cells(r, "E")
.Display
End With
If OlCreate Then Ol.Quit
Set Wb = Nothing: Set Ws = Nothing: Set Ol = Nothing
End Sub
Tabelle 1
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With Target
If .Row > 1 And .Column = 6 Then
Call a(.Row): Cancel = True
End If
End With
End Sub

Beim versenden wird leider keine Signatur hinzugefügt. Ich habe etwas von GETInspector(?) gelesen, bin damit aber überfordert. Mein Wunsch ist, dass die Standard-Signatur automatisch ergänzt wird - wie, wo muss ich welchen Code ergänzen?
www.herber.de/bbs/user/128472.xlsx
Freue mich auf eure Hilfe ;)
Danke und Gruß
Timo
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA E-Mail versenden mit Signatur
18.03.2019 14:00:38
Mister-B
Hallo,
das hier funktioniert für mich:
Public Sub Mail()
Dim OutApp As Object
Dim OutMail As Object
Dim strBody As String
Dim Signature As String
Signature = Environ("appdata") & "\Microsoft\Signatures\P&O.htm"
Signature = CreateObject("Scripting.FileSystemObject").GetFile(Signature).OpenAsTextStream( _
1, -2).ReadAll
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
strBody = "Sehr geehrte Damen und Herren,
With OutMail .SentOnBehalfOfName = "aaa@bbb.cc" .Display .To = "Werauchimmer" .CC = "" .BCC = "" .Subject = "Betreff: " .HTMLBody = strBody & vbNewLine & Signature End With On Error GoTo 0 Set OutMail = Nothing Set OutApp = Nothing End Sub
Den Namen deiner Signaturdatei muss du logischerweise anpassen.
Viele Grüße
Martin
Anzeige
AW: VBA E-Mail versenden mit Signatur
18.03.2019 14:23:55
Timo
Hallo Martin,
vielen Dank für die schnelle Antwort.
Wenn ich deinen Code einfüge und es speichere, erhalte ich die Fehlermeldung:
Fehlermeldung beim Kompilieren: Sub oder Function nicht definiert, gleichzeitig wird Call a in "Tabelle1" blau hinterlegt.
Was hat es zu bedeuten?
Grüße,
Timo
Anzeige
AW: VBA E-Mail versenden mit Signatur
18.03.2019 14:26:10
Timo
Ergänzend, wenn ich die Fehlermeldung bestätige (ok), dann wird Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) gelb hinterlegt.
AW: VBA E-Mail versenden mit Signatur
18.03.2019 21:28:09
Luschi
Hallo Martin,
Deine Methode funktioniert nur, solange in der Signatur keine Grafik eingebunden ist.
Schuld daran ist diese Zeile in der entsprechenden Signatur-htm-Datei:
>v:imagedata src="Winterdienst-Dateien/image001.gif" o:title="LadeLui"/ Dabei ist:
- Winterdienst der Name der Signatur
- Winterdienst-Dateien das Unterverzeischnis mit der Grafik
- image001.gif der Name der Grafikdatei
Outlook selbst ist beim Laden der Signatur in der Lage, den relativen Pfad 'Winterdienst-Dateien'
in den absoluten Pfad
C:\Users\...\AppData\Roaming\Microsoft\Signatures\Winterdienst-Dateien\image001.gif
zu vervollständigen, bei Deinem Verfahren bleibt das aber aus und so erzeugt Outlook ein leeres Image-Objekt mit einer Fehlermeldung in der E-Mail.
Mein Beispiel ist deshalb etwas aufwändiger: https://www.herber.de/bbs/user/126157.zip
Gruß von Luschi
aus klein-Paris
PS: Warum die Signatur-Datei mehrere Zehntausend Byte groß sein muß, obwohl nur ganz wenig Text (65 Zeichen) und die kleine Grafik angezeigt werden soll, kann wahrscheinlich auch MS nicht erklären.
Anzeige
AW: VBA E-Mail versenden mit Signatur
18.03.2019 16:30:32
{Boris}
Hi,
GetInspector ist schon richtig. Ganz einfach so:
With Ol.createitem(0)
.GetInspector
.To = Ws.Cells(r, "A")
End With
VG, Boris
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

E-Mail mit Signatur aus Excel VBA versenden


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und aktiviere die Entwicklertools.

    • Gehe zu „Datei“ > „Optionen“ > „Menüband anpassen“ und aktiviere „Entwicklertools“.
  2. Füge ein neues Modul hinzu.

    • Klicke im VBA-Editor (Alt + F11) mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ und wähle „Einfügen“ > „Modul“.
  3. Kopiere den folgenden Code in das Modul:

    Sub EMailMitSignaturVersenden(r As Integer)
       Dim Wb As Workbook: Set Wb = ThisWorkbook
       Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Tabelle1")
       Dim Ol As Object, OlCreate As Boolean
       On Error Resume Next
       Set Ol = GetObject(, "Outlook.Application")
       If Err Then
           Set Ol = CreateObject("Outlook.Application")
           OlCreate = True
       End If
       With Ol.CreateItem(0)
           .To = Ws.Cells(r, "A")
           .CC = Ws.Cells(r, "B")
           .BCC = Ws.Cells(r, "C")
           .Subject = Ws.Cells(r, "D")
           .Body = Ws.Cells(r, "E")
           .GetInspector ' Aktiviert die Signatur
           .Display
       End With
       If OlCreate Then Ol.Quit
       Set Wb = Nothing: Set Ws = Nothing: Set Ol = Nothing
    End Sub
  4. Erstelle das Ereignis für das Doppelklicken.

    • Füge den folgenden Code in das entsprechende Arbeitsblatt „Tabelle1“ ein:
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
       If Target.Row > 1 And Target.Column = 6 Then
           Call EMailMitSignaturVersenden(Target.Row)
           Cancel = True
       End If
    End Sub
  5. Speichere deine Datei als Makro-fähige Excel-Datei (.xlsm).


Häufige Fehler und Lösungen

  • Fehler: Sub oder Function nicht definiert

    • Stelle sicher, dass die Methode „EMailMitSignaturVersenden“ korrekt in deinem Modul vorhanden ist.
  • Keine Signatur sichtbar

    • Überprüfe, ob die Zeile .GetInspector im Code vorhanden und korrekt platziert ist. Diese Zeile sorgt dafür, dass die Standard-Signatur von Outlook eingefügt wird.
  • Fehlermeldung bei Grafik in der Signatur

    • Wenn deine Signatur eine Grafik enthält, stelle sicher, dass die Grafik im richtigen Verzeichnis gespeichert ist und der Pfad in der Signatur korrekt angegeben ist.

Alternative Methoden

  • VBA Outlook Signatur einfügen mit HTML

    • Du kannst die Signatur auch direkt aus einer HTML-Datei laden. Beispiel:
    Dim Signature As String
    Signature = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Pfad\zu\deiner\signatur.htm").ReadAll
    .HTMLBody = strBody & Signature
  • E-Mail über Outlook VBA Signature

    • Du kannst die Signatur auch manuell in den HTMLBody der E-Mail einfügen, wenn du mehr Kontrolle über das Layout benötigst.

Praktische Beispiele

  1. E-Mail mit Logo in der Signatur versenden:

    .HTMLBody = "<html><body>" & strBody & "<br><img src='C:\Pfad\zu\deinem\logo.png'></body></html>" & Signature
  2. Versenden von E-Mails an mehrere Empfänger:

    • Benutze eine Schleife, um E-Mails an eine Liste von Empfängern zu versenden.

Tipps für Profis

  • Feinabstimmung der Signatur:

    • Achte darauf, dass die Signatur in der HTML-Datei korrekt formatiert ist. Füge Styles und Formatierungen hinzu, um das Aussehen zu verbessern.
  • Debugging:

    • Nutze Debug.Print in deinem Code, um Variablenwerte und Fehlermeldungen während der Ausführung zu überwachen.
  • Verwendung von Konstanten:

    • Definiere häufig verwendete Pfade oder E-Mail-Adressen als Konstanten, um den Code übersichtlicher zu gestalten.

FAQ: Häufige Fragen

1. Wie kann ich eine eigene Signatur in Outlook erstellen? Du kannst eine Signatur in Outlook erstellen, indem du zu „Datei“ > „Optionen“ > „Mail“ > „Signaturen“ gehst.

2. Kann ich mehrere Signaturen in VBA verwenden? Ja, du kannst mehrere Signaturen verwalten, indem du den Pfad zur jeweiligen Signaturdatei in deinem Code anpasst.

3. Wie füge ich ein Logo in die E-Mail-Signatur ein? Das Logo sollte in der Signatur-HTML-Datei referenziert werden. Stelle sicher, dass der Pfad zur Grafik korrekt ist.

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