Herbers Excel-Forum - das Archiv
VBA-Code funktioniert nicht mit anderem Office
Betrifft: VBA-Code funktioniert nicht mit anderem Office
von: Chris
Geschrieben am: 20.09.2019 16:31:09
Hallo zusammen,
ich brauche Eure Expertise. Ich habe einen Makro gebaut, der mir eine E-Mail erstellt (mit Anhang) und einer Signatur. Bei mir funktioniert das Ganze reibungslos.
Meine Kollegin will den gleichen Makro ausführen und er läuft immer auf Fehler beim Einfügen der Signatur. Einziger Unterscheid zwischen unseren PC-Systemen ist die Office-Version. Ich habe Office 2010 und sie hat Office 2016...
Hier der Makro:
Sub Excel_Serial_Mail()
Dim objOLOutlook As Object 'Steht für die Anwendung Outlook
Dim objOLMail As Object 'Steht für die einzelnen E-Mails
Dim lngMailNr As Long 'Zeile, in der die untereste E-Mail in Spalte A steht
Dim lngZaehler As Long 'Zähler, welche Zeile gerade angesprochen wird
On Error GoTo ErrorHandler 'Bei einem Fehler, wird unten die Fehlerbehandlung angesprochen
Set objOLOutlook = CreateObject("Outlook.Application")
lngMailNr = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row 'Ermittlung unterste Zeile in Spalte _
_
_
A
For lngZaehler = 2 To lngMailNr
If Cells(lngZaehler, 2) <> "" Then
Set objOLMail = objOLOutlook.CreateItem(olMailItem)
With objOLMail
.To = Cells(lngZaehler, 2)
.CC = Cells(lngZaehler, 3)
.BCC = Cells(lngZaehler, 4)
.Subject = Cells(lngZaehler, 5)
.Body = Cells(lngZaehler, 6)
Dim strAttachmentPfad1 As String
strAttachmentPfad1 = Cells(lngZaehler, 7)
.Attachments.Add strAttachmentPfad1
.Display
VBA.SendKeys "^{END}", True 'Cursor ans Ende der EMail setzen
strSignatur = "EXTERN" 'Name der gespeicherten Signatur
.GetInspector.CommandBars.Item("Insert").Controls("Signatur").Controls(strSignatur). _
Execute 'Einfügen einer bestimmten Signatur
End With
Set objOLMail = Nothing 'E-Mail-Objekt wird beendet
End If
Next lngZaehler 'Zur nächsten E-Mail
Set objOLOutlook = Nothing 'Anwendung Outlook wird vaporisiert
Exit Sub
ErrorHandler:
MsgBox Err.Number & " " & Err.Description & " " & Err.Source, _
vbInformation, "An Error occured!"
Exit Sub
End Sub
Was muss ich ändern, dass er auch bei ihr funktioniert? Die Signatur heißt natürlich gleich wie im Makro angegeben - daran liegt es nicht.
Danke und LG
Chris
Betrifft: AW: VBA-Code funktioniert nicht mit anderem Office
von: 1714144.html
Geschrieben am: 20.09.2019 17:18:27
Hallo Chris,
der Übeltäter ist diese Vba-Zeile:
.GetInspector.CommandBars.Item("Insert").Controls("Signatur").Controls(strSignatur). _
Execute 'Einfügen einer bestimmten Signatur
und wurde durch M$ höchstpersönlich verursacht, denn ab M$-Office 2013 wurde bei Outlook (und nur bei Outlook) das Commandbar-Object für den Vba-Zugriff gesperrt.
Wer nur die Standardsignatur verwenden will, der kann das mit:
Dim xBody As String
With objOLMail
.GetInspector 'erzeugt die Standard-Signatur
xBody = .HtmlBody 'rettet den akt. Inhalt der EMail (Signatur!)
.HtmlBody = "irgend was Sinnvolles..." 'dabei wird die Signatur in der EMail zerstört
.HtmlBody = .HtmlBody = & xBody 'hängt Signatur wieder dran
.Display
End With
Mit den Sondersignaturen ist das etwas komplizierter. Man muß den gesamten Inhalt der Extern.htm in eine String-Variable einlesen. Enthält die Signatur eine Grafik/Bildchen, dann gibt es folgende Zeile in der htm-Datei:
fsrc="Extern-Dateien/image001.gif" alt=... v:shapes="Bild_x0020_1"><![endif]></span><o:p></o:p></p>
Leider ist der Pfad zur image001.gif nur relativ und es fehlt die vollreferenzierte LW=Pfandangabe
Während .GetInspector die Angaben automatisch hinzufügt, muß es der Programmierer bei Sondersignaturen selber machen.
Ich habe bisher per Google keine Lösung gefunden, die einen Lösungsweg dazu zeigt.
Habe mir deshalb selber einen Weg zusammengeschustert, der funktioniert und in der Praxis erprobt ist.
Ich schaue heute Abend mal nach der Lösungsdatei und poste sie hier.
Diese Eigenbrötlerei von M$, etwas zu verbieten, ohne eine Ersatzlösung zu schaffen, verstehe ich nicht und im I-Net sind die Hilferufe zu diesem Thema immens.
Gruß von Luschi
aus klein-Paris
PS: Warum meine Signatur mit einem kurzen 3-Zeiler als htm-Datei 40 kByte (also 40 x 1.024 Byte)
groß sein muß, konnte mir auch noch keiner erklären.
Betrifft: AW: VBA-Code funktioniert nicht mit anderem Office
von: 1714149.html
Geschrieben am: 20.09.2019 17:37:54
Genial - danke schon mal für deine Erklärungen und ich bin gespannt auf die Datei :-) im Grunde echt doof von MS... schönen Feierabend und LG Chris
Betrifft: AW: VBA-Code funktioniert nicht mit anderem Office
von: 1714177.html
Geschrieben am: 21.09.2019 07:24:13
Hallo Chris,
hier die Exceldatei zum Thema Spezialsignatur in Outlook einfügen.
Diesen Code kannst Du auf für Outlook 2010 benutzen und ab Outlook 2013 ist er i.M. eben Pflicht.
https://www.herber.de/bbs/user/132141.zip
good luck & Gruß von Luschi
aus klein-Paris