Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

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

Beiträge aus dem Excel-Forum zum Thema "VBA-Code funktioniert nicht mit anderem Office"