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

Forumthread: Signatur per VBA im Outlook anhängen

Signatur per VBA im Outlook anhängen
25.10.2019 11:10:17
Torsten
Moin zusammen,
Mein PC auf Arbeit wurde von Win 7 auf Win 10 mit Office 365 umgestellt.
Nun funktionieren meinen ganzen in Office 2010 geschriebenen Skripte nicht mehr.
Ich erstelle ein Formular mit Excel und per VBA wird das mit Outlook verschickt.
Nun wird aber keine Signatur per folgendem Kommando in der Email angehangen.
Weis jemand warum und wie ich es lösen kann? Mit dem Skript arbeiten mehrere Kollegen. somit ist es wichtig, das immer auf "Auto-Signatur-extern" zugegriffen wird.

strSignatur = "Auto-Signatur-extern"
.GetInspector.CommandBars.Item("Insert").Controls("Signatur").Controls(strSignatur).Execute

Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Signatur per VBA im Outlook anhängen
25.10.2019 15:07:17
Regina
Hi, ich habe das mal so gelöst:

Sub signatur_abfragen()
str_signatur_name = "Extern"  ' hier den Namen der Signatur aus Outlook angeben
str_signatur_pfad = Environ("appdata") & "MicrosoftSignatures" & str_signatur_name & ".htm"
If Dir(str_signatur_pfad)  "" Then
str_signatur = GetSignature(str_signatur_pfad)
Else
str_signatur = ""
End If
' str_signatur an HTML-Body anhängen
End Sub
Function GetSignature(fPath As String) As String
Dim fso As Object
Dim TSet As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set TSet = fso.getfile(fPath).OpenAsTextStream(1, -2)
GetSignature = TSet.readall
TSet.Close
End Function
Gruß Regina
Anzeige
AW: Signatur per VBA im Outlook anhängen
25.10.2019 20:36:14
Luschi
Hallo Torsten,
leider ist das Thema Signatur mit Outlook ab Office 2013 ein Trauerspiel. M$ hat den Zugriff auf das CommandBar-Objekt ab Outlook 2013 für Vba-Zugriffe total gesperrt - und deshalb klappt der von Dir gezeigte Befehl nicht mehr!
Sobald 'ne Grafik in die Signatur eingebunden wurde, wird es noch komplizierter, denn in der entsprechenden .htm-Datei ist der Pfad nur relativ und nicht absolut angegeben.
Deshalb kann auch Reginas Code so nicht klappen (mal abgesehen von den fehlenden '\'-Zeichen im Code).
Hier mal eine Lösung aus dem I-Net, die ich entsprechend angepaßt habe:
https://www.ms-office-forum.net/forum/showthread.php?t=350109&page=2&highlight=signatur#20
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Signatur per VBA im Outlook anhängen
25.10.2019 21:19:15
Regina
Hi,
der Code läuft problmelos unter Win 10 mit Office 365 und mit Office 2016 (gerade nochmal getestet). Allerdings ohne Grafik in der Signatur.
Gruß
Regina
AW: Signatur per VBA im Outlook anhängen
26.10.2019 08:32:52
Luschi
Hallo Regina,

der Code läuft problmelos unter Win 10 mit Office 365 und mit Office 2016
dann kann aber diese gepostete Vba-Zeile so nicht bei Dir stehen:
str_signatur_pfad = Environ("appdata") & "MicrosoftSignatures" & str_signatur_name & ".htm"
bei mir sieht die so aus:
str_signatur_pfad = Environ("appdata") & "\Microsoft\Signatures\" & str_signatur_name & ".htm"
Trotzdem finde ich es nicht i.O. das M$ jahrelanges Praxiswissen einfach über Board schmeißt und den User im Regen stehen läßt, weil keine neue Lösung angeboten wird.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Signatur per VBA im Outlook anhängen
26.10.2019 09:27:29
Regina
Hi,
Asche auf mein Haupt: Ich hatte den Code neulich in einem anderen Forum gepostet, das die Backslashes nicht mit ausgibt und der Einfachheit halber von dort hier hin kopiert .... Mit den "\" hast Du natürlich Recht.
Gruß
Regina
AW: Signatur per VBA im Outlook anhängen
26.10.2019 17:38:48
Luschi
Hallo Regina,
hast Du mal meine Beispieldatei getestet. Für mich ist immer noch unklar, ob diese Lösung auch klappt, wenn der User nur Excel und Outlook- aber kein WinWord - installiert hat.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Signatur per VBA im Outlook anhängen
26.10.2019 18:11:38
Regina
Hi, deine Variante funktioniert bei mir. Allerdings habe ich Word installiert, kann also nicht ohne testen.
AW: Signatur per VBA im Outlook anhängen
28.10.2019 11:06:37
Torsten
Moin,
Ich bekomms einfach nicht hin. Wo liegt der Fehler?
Liegt es daran das unsere Daten alle nur noch in einer Cloud liegen und der Pfad deshalb nicht stimmt?
Aber die Signaturen stehen ja unter benannten Pfad. Bekomme trotzdem Fehlermeldung
Userbild
Sub senden()
Dim olApp As Object
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
strhtml = strhtml & "

" strhtml = strhtml & Range("E3").Value & "
strhtml = strhtml & Range("E4").Value & "
strhtml = strhtml & Range("E5").Value & " " strhtml = strhtml & Range("H5").Value & "
strhtml = strhtml & Range("E6").Value & "
strhtml = strhtml & Range("E7").Value & " " strhtml = strhtml & Range("F7").Value & "
strhtml = strhtml & Range("E8").Value & " " strhtml = strhtml & Range("F8").Value & " von " strhtml = strhtml & Range("G8").Value & "
strhtml = strhtml & Range("E9").Value & "
strhtml = strhtml & Range("E10").Value & " " strhtml = strhtml & Range("F10").Value & "
strhtml = strhtml & Range("E11").Value & " " strhtml = strhtml & Range("F11").Value & " ldm" & "
strhtml = strhtml & Range("E12").Value & " " strhtml = strhtml & "ca. " & Range("F12").Value & " kg" & "
strhtml = strhtml & Range("E13").Value & "
strhtml = strhtml & "" & Range("E14").Value & "
strhtml = strhtml & Range("E15").Value & "
strhtml = strhtml & Range("E16").Value & " " strhtml = strhtml & "" & Range("I16").Value & "
strhtml = strhtml & Range("E17").Value & "
strhtml = strhtml & Range("E18").Value & " " strhtml = strhtml & "" & Range("I18").Value & "


.SentOnBehalfOfName = Range("F21") .To = Range("F22") .cc = Range("F23") .bcc = Range("F24") .Subject = Range("F20") .htmlbody = strhtml .Display VBA.SendKeys "^{END}", True VBA.SendKeys "{NUMLOCK}", True str_signatur_name = "Auto-Signatur-extern" ' hier den Namen der Signatur aus Outlook angeben str_signatur_pfad = Environ("appdata") & "\Microsoft\Signatures\" & str_signatur_name & ".htm" If Dir(str_signatur_pfad) "" Then str_signatur = GetSignature(str_signatur_pfad) Else str_signatur = "" End If ' str_signatur an HTML-Body anhängen Function GetSignature(fPath As String) As String Dim fso As Object Dim TSet As Object Set fso = CreateObject("Scripting.FileSystemObject") Set TSet = fso.getfile(fPath).OpenAsTextStream(1, -2) GetSignature = TSet.readall TSet.Close End Function End With Set olApp = Nothing End Sub

Anzeige
AW: Signatur per VBA im Outlook anhängen
28.10.2019 12:24:53
Regina
hi, der Fehler liegt an der fehlenden Variablen Deklaration für str_signatur_pfad, d.h. folgende Zeile fehlet:
Dum str_signatur_pfad as String
Du solltest Dir angewöhnen alle Variablen zu deklarieren.
Außerdem kann die Function nicht innerhalb der Sub stehen. Das Ganze muss so aussehen:
Sub senden()
Dim olApp As Object
Dim str_signatur_pfad As String
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
strhtml = strhtml & ""
strhtml = strhtml & Range("E3").Value & " "
strhtml = strhtml & Range("E4").Value & " "
strhtml = strhtml & Range("E5").Value & " "
strhtml = strhtml & Range("H5").Value & " "
strhtml = strhtml & Range("E6").Value & " "
strhtml = strhtml & Range("E7").Value & " "
strhtml = strhtml & Range("F7").Value & " "
strhtml = strhtml & Range("E8").Value & "     "
strhtml = strhtml & Range("F8").Value & " von "
strhtml = strhtml & Range("G8").Value & " "
strhtml = strhtml & Range("E9").Value & " "
strhtml = strhtml & Range("E10").Value & " "
strhtml = strhtml & Range("F10").Value & " "
strhtml = strhtml & Range("E11").Value & " "
strhtml = strhtml & Range("F11").Value & " ldm" & " "
strhtml = strhtml & Range("E12").Value & " "
strhtml = strhtml & "ca.   " & Range("F12").Value & " kg" & " "
strhtml = strhtml & Range("E13").Value & " "
strhtml = strhtml & "" & Range("E14").Value & " "
strhtml = strhtml & Range("E15").Value & " "
strhtml = strhtml & Range("E16").Value & " "
strhtml = strhtml & "" & Range("I16").Value & " "
strhtml = strhtml & Range("E17").Value & " "
strhtml = strhtml & Range("E18").Value & " "
strhtml = strhtml & "" & Range("I18").Value & " "
.SentOnBehalfOfName = Range("F21")
.To = Range("F22")
.cc = Range("F23")
.bcc = Range("F24")
.Subject = Range("F20")
.htmlbody = strhtml
.Display
VBA.SendKeys "^{END}", True
VBA.SendKeys "{NUMLOCK}", True
str_signatur_name = "Auto-Signatur-extern"  ' hier den Namen der Signatur aus Outlook angeben
str_signatur_pfad = Environ("appdata") & "\Microsoft\Signatures\" & str_signatur_name & ".htm"
If Dir(str_signatur_pfad)  "" Then
str_signatur = GetSignature(str_signatur_pfad)
Else
str_signatur = ""
End If
' str_signatur an HTML-Body anhängen
End With
Set olApp = Nothing
End Sub
Function GetSignature(fPath As String) As String
Dim fso As Object
Dim TSet As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set TSet = fso.getfile(fPath).OpenAsTextStream(1, -2)
GetSignature = TSet.readall
TSet.Close
End Function

Gruß
Regina
Anzeige
AW: Signatur per VBA im Outlook anhängen
28.10.2019 13:17:15
Torsten
Hallo Regina,
Danke für die schnelle Hilfe.
Jetzt kommt keine Fehlermeldung mehr und Outlook wird geöffnet, jedoch fehlt die Signatur immer noch.
AW: Signatur per VBA im Outlook anhängen
28.10.2019 13:31:17
Regina
... mit welcher Office-Version hast Du das jetzt getestet?
Wie hast Du die Signatur den angefügt? D.h was steht hinter dieser zeile:
' str_signatur an HTML-Body anhängen
Gruß
Regina
Anzeige
AW: Signatur per VBA im Outlook anhängen
28.10.2019 14:15:51
Torsten
Wir haben hier Office 365. Ich glaube Office 16.
Ich dachte das Skript nutzt die vor eingestellte Signatur die bei jedem "Auto-Signatur-extern" heißt.
Es soll ja jeder seine eigene Signatur unter die Ausgabe des Skriptes erstellt bekommen.
AW: Signatur per VBA im Outlook anhängen
28.10.2019 15:42:35
Regina
ja, aber der Code ermittelt erstmal nur die Signatur, die muss dann an den HTML-Body noch angehängt werden, teste mal folgeden Code:
Sub senden()
Dim olApp As Object
Dim str_signatur_pfad As String
' Sigbatur ermitteln
str_signatur_name = "Auto-Signatur-extern"  ' hier den Namen der Signatur aus Outlook  _
angeben
str_signatur_pfad = Environ("appdata") & "\Microsoft\Signatures\" & str_signatur_name & ".htm" _
If Dir(str_signatur_pfad)  "" Then
str_signatur = GetSignature(str_signatur_pfad)
Else
str_signatur = ""
End If
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
strhtml = strhtml & ""
strhtml = strhtml & Range("E3").Value & " "
strhtml = strhtml & Range("E4").Value & " "
strhtml = strhtml & Range("E5").Value & " "
strhtml = strhtml & Range("H5").Value & " "
strhtml = strhtml & Range("E6").Value & " "
strhtml = strhtml & Range("E7").Value & " "
strhtml = strhtml & Range("F7").Value & " "
strhtml = strhtml & Range("E8").Value & "     "
strhtml = strhtml & Range("F8").Value & " von "
strhtml = strhtml & Range("G8").Value & " "
strhtml = strhtml & Range("E9").Value & " "
strhtml = strhtml & Range("E10").Value & " "
strhtml = strhtml & Range("F10").Value & " "
strhtml = strhtml & Range("E11").Value & " "
strhtml = strhtml & Range("F11").Value & " ldm" & " "
strhtml = strhtml & Range("E12").Value & " "
strhtml = strhtml & "ca.   " & Range("F12").Value & " kg" & " "
strhtml = strhtml & Range("E13").Value & " "
strhtml = strhtml & "" & Range("E14").Value & " "
strhtml = strhtml & Range("E15").Value & " "
strhtml = strhtml & Range("E16").Value & " "
strhtml = strhtml & "" & Range("I16").Value & " "
strhtml = strhtml & Range("E17").Value & " "
strhtml = strhtml & Range("E18").Value & " "
strhtml = strhtml & "" & Range("I18").Value & " "
strhtml = strhtml & "" & str_signatur  '*****hier br einfügen
.SentOnBehalfOfName = Range("F21")
.To = Range("F22")
.cc = Range("F23")
.bcc = Range("F24")
.Subject = Range("F20")
.htmlbody = strhtml
.Display
VBA.SendKeys "^{END}", True
VBA.SendKeys "{NUMLOCK}", True
' str_signatur an HTML-Body anhängen
End With
Set olApp = Nothing
End Sub
Function GetSignature(fPath As String) As String
Dim fso As Object
Dim TSet As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set TSet = fso.getfile(fPath).OpenAsTextStream(1, -2)
GetSignature = TSet.readall
TSet.Close
End Function

Inn der mit den **** gekennzeichneten Stelle solltest Du zwischen die Anführungszeichen in spitzen Klammern ein br setzen. Dann sollte vor der Signatur ein Zeilenumbrich erfolgen. Die Software hier schluckt die spitzen Klammern.
Gruß
Regina
Anzeige
AW: Signatur per VBA im Outlook anhängen
29.10.2019 07:39:26
Torsten
Klasse Regina,
funktioniert perfekt!
Vielen Dank für deine Mühe und deine Geduld mit mir.
MfG Torsten
AW: Signatur per VBA im Outlook anhängen
29.10.2019 07:41:53
Regina
Hallo Torsten,
prima, dass der Ansatz dann doch gepasst hat... manchmal erlebt man bei MS ja doch merkwürdige Dinge, so dass mich oft nicht smehr wundert ....
Gruß
Regina
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Signatur per VBA im Outlook anhängen


Schritt-für-Schritt-Anleitung

Um eine Outlook-VBA-Signatur in eine E-Mail einzufügen, musst Du zunächst sicherstellen, dass Du den richtigen Namen der Signatur und den Pfad zu den Signaturen in Deinem System kennst. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Outlook-Signatur erstellen: Stelle sicher, dass die Signatur, die Du verwenden möchtest, in Outlook erstellt wurde (z.B. "Auto-Signatur-extern").

  2. VBA-Editor öffnen: Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Neues Modul erstellen: Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  4. VBA-Code einfügen: Füge den folgenden Code in das Modul ein:

    Sub senden()
       Dim olApp As Object
       Dim str_signatur_pfad As String
       Dim str_signatur_name As String
       Dim strhtml As String
    
       str_signatur_name = "Auto-Signatur-extern"
       str_signatur_pfad = Environ("appdata") & "\Microsoft\Signatures\" & str_signatur_name & ".htm"
    
       If Dir(str_signatur_pfad) <> "" Then
           str_signatur = GetSignature(str_signatur_pfad)
       Else
           str_signatur = ""
       End If
    
       Set olApp = CreateObject("Outlook.Application")
       With olApp.CreateItem(0)
           strhtml = "<p>Hier ist der E-Mail-Inhalt.</p>" & str_signatur
           .HTMLBody = strhtml
           .Display
       End With
    
       Set olApp = Nothing
    End Sub
    
    Function GetSignature(fPath As String) As String
       Dim fso As Object
       Dim TSet As Object
       Set fso = CreateObject("Scripting.FileSystemObject")
       Set TSet = fso.getfile(fPath).OpenAsTextStream(1, -2)
       GetSignature = TSet.readall
       TSet.Close
    End Function
  5. Skript ausführen: Drücke F5, um das Skript auszuführen.


Häufige Fehler und Lösungen

  • Fehlende Signatur: Wenn die Signatur nicht angezeigt wird, überprüfe, ob der Name der Signatur korrekt ist und dass der Pfad zu den Signaturen stimmt. Du kannst den Pfad auch manuell überprüfen, indem Du im Explorer nach C:\Users\<DeinBenutzername>\AppData\Roaming\Microsoft\Signatures navigierst.

  • Kompatibilitätsprobleme: Der Code könnte unter verschiedenen Office-Versionen unterschiedliche Ergebnisse liefern. Achte darauf, dass Du eine unterstützte Version wie Office 365 oder Office 2016 verwendest.

  • Variablen nicht deklariert: Stelle sicher, dass alle Variablen im Code deklariert sind, um Kompilierungsfehler zu vermeiden. Füge z.B. Dim str_signatur As String hinzu, wenn es fehlt.


Alternative Methoden

Eine alternative Methode zur Verwendung einer VBA-Signatur in Outlook ist die Verwendung von HTML-Inhalten direkt aus einer Datei oder einer Webseite. Du kannst die Signatur auch in einem HTML-Dokument speichern und dann in den E-Mail-Inhalt laden.

strhtml = strhtml & GetSignature("PfadZurDeinerHTMLDatei.html")

Diese Methode kann nützlich sein, wenn Du eine komplexere Signatur mit Bildern oder Links hast.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du die VBA-Signatur in E-Mails integrieren kannst:

  1. E-Mail mit Signatur in HTML formatieren:

    strhtml = "<p>Hallo,</p><p>Hier ist die Nachricht.</p>" & str_signatur
  2. Signatur aus einer anderen Quelle einfügen:

    Wenn Du eine Signatur aus einer externen Datei einfügen möchtest:

    strhtml = strhtml & GetSignature("C:\Pfad\Zu\Deiner\Signatur.htm")

Tipps für Profis

  • Debugging: Nutze die Debug.Print-Anweisung, um den Inhalt von Variablen in der VBA-Konsole zu überprüfen. Dies hilft, Fehler schneller zu identifizieren.

  • Automatisierung: Du kannst das Skript so anpassen, dass es automatisch E-Mails in regelmäßigen Abständen versendet, was besonders nützlich für regelmäßige Updates ist.

  • Sicherheitsrichtlinien: Achte darauf, die Sicherheitsrichtlinien Deiner Organisation zu beachten, wenn Du VBA-Skripte erstellst, die auf Outlook zugreifen.


FAQ: Häufige Fragen

1. Warum wird meine Signatur nicht angezeigt?
Stelle sicher, dass der Pfad zur Signatur korrekt ist und dass die Signatur in Outlook existiert.

2. Funktioniert das Skript auch in Office 2013?
Das Skript sollte auch in Office 2013 funktionieren, jedoch kann es Einschränkungen bei der Verwendung des CommandBar-Objekts geben.

3. Wie kann ich mehrere Signaturen verwalten?
Du kannst mehrere Signaturen erstellen und den Namen der Signatur im Skript dynamisch ändern, je nach Bedarf.

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