none
Office 2013 Laufzeitfehler '429': Objekterstellung durch ActiveX-Komponente nicht

    Frage

  • Sehr geehrte Damen und Herren

    Ich habe seit ca. 1 Woche das Problem das ich bei meinen Auswertungen in der Firma den Fehler "Laufzeitfehler '429': Objekterstellung durch ActiveX-Komponente nicht möglich" auf allen 32-bit Office 2013 erhalte. Auf meinem PC mit Office 64-bit 2013 jedoch funktioniert das Makro.

    Ich habe in dieversen Foren nach Lösungen gesucht jedoch hat mir keine von Ihnen ein erfreuliches Resultat gebracht. Der Fehler ist immer noch vorhanden.

    Die Microsoft Hilfe "244264 INFO: Troubleshooting Error 429 When Automating Office Applications" ist zwar sehr gut aber auch massive veraltet und passt nicht mehr auf meine Office Version.

    Mein Code ist:

    ' Der Verweis auf die Bibliothek
    ' "Microsoft Outlook 15.0 Object Library"
    ' muss aktiviert sein
    Sub CreateHTMLMail()
    '    Dim olApp As Outlook.Application  ' Objekt-Variable OutApp erstellen (Early Binding)          Bei Early Binding muss vorher über Extras => Verweise die "Microsoft Outlook 15.0 Object Library aktiviert (Häcklein setzen)werden.
    '    Dim objMail As Outlook.MailItem  ' Objekt-Variable Nachricht erstellen(Early Binding)        Ansonsten giebt es eine Fehlermeldung (Fehler beim Kompilieren: Benutzerdefinierter Typ nicht definiert).
        Dim olApp As Object
        Dim objMail As Object
        Dim strPfad As String
        Dim strAttachment As String
        Dim MSWS As Worksheet
        
        Worksheets("Tag").Visible = xlSheetHidden
        Worksheets("Woche").Visible = xlSheetHidden
        Worksheets("Kundenzahlen").Visible = xlSheetHidden
                    
        On Error GoTo err_handler ' Fehler abfangen
       
        Set olApp = CreateObject("Outlook.Application")
        Set objMail = olApp.CreateItem(olMailItem)
        Set MSWS = Worksheets("MS")
       
        strPfad = Range("NaAblageOrt")
        ActiveWorkbook.Save
       
        ' Prüfen, ob die Datei, die angehängt werden
        ' soll, existiert
        strAttachment = Range("NaDatei2")
        If Dir(strPfad & strAttachment) = "" Then
             MsgBox "Die Datei " & Range("NaDatei2") & " existiert nicht."
             Exit Sub
        End If
       
        With objMail
           .To = Range("NaAn").Value
           .CC = Range("NaCopy").Value
           .BCC = Range("NaBlindCopy").Value
           .Subject = MSWS.Range("A14") & " " & MSWS.Range("A15")
       
           ' Der in HTML formatierte Text
           .BodyFormat = olFormatHTML
           .HTMLBody = "<HTML>" & _
                          "<P style='font-family:Arial,sans-serif; font-size:18px;'><b>" & _
                             MSWS.Range("A14").Value & "</b></P>" & _
                          "<P style='font-family:Arial,sans-serif; font-size:14px;'><b>" & _
                             MSWS.Range("A15").Value & "</b></P>" & _
                          "<BODY>" & _
                             "<P style='font-family:Arial,sans-serif; font-size:14px;'><b>" & _
                                MSWS.Range("A18").Value & "</b><BR>" & MSWS.Range("B19").Value & "<BR>" & MSWS.Range("B20").Value & "<BR>" & MSWS.Range("B21").Value & "<BR>" & MSWS.Range("B22").Value & "<BR>" & MSWS.Range("B23").Value & "<BR>" & MSWS.Range("B24").Value & "<BR>" & MSWS.Range("B25").Value & "<BR>" & MSWS.Range("B26").Value & "<BR><b>" & _
                                MSWS.Range("A27").Value & "</b><BR>" & MSWS.Range("B28").Value & "<BR>" & MSWS.Range("B29").Value & "<BR>" & MSWS.Range("B30").Value & "<BR>" & MSWS.Range("B31").Value & "<BR>" & MSWS.Range("B32").Value & "<BR>" & MSWS.Range("B33").Value & "<BR>" & MSWS.Range("B34").Value & "<BR>" & MSWS.Range("B35").Value & "</b><BR>" & _
                             "</P>" & _
                             "<P style='font-family:Arial,sans-serif; font-size:14px;'><b>" & _
                                "Freundliche Grüsse" & "<BR>" & _
                                "" & "<BR>" & _
                                "Controlling OB Bau+Hobby" & _
                             "</b></P>" & _
                          "</BODY>" & _
                       "</HTML>"
           .Display
          
           ' Datei wird angehängt
           With .Attachments
              .Add ThisWorkbook.FullName ' Diese Arbeitsmappe
           End With
        End With
       
        Set olApp = Nothing
        Set objMail = Nothing
        
        Worksheets("Tag").Visible = xlSheetVisible
        Worksheets("Woche").Visible = xlSheetVisible
        Worksheets("Kundenzahlen").Visible = xlSheetVisible
       
        Exit Sub
       
        ' Abgefangene Fehler anzeigen
    err_handler:
        MsgBox "Laufzeitfehler " & Err.Number & " - " & Err.Description, vbCritical
        MsgBox "Bitte kontaktieren Sie Rémy Grenacher , vbInformation
      
    End Sub

    nach der Fehlermeldung beim anklicken von Debugging bin ich immer auf der Zeile

        Set olApp = CreateObject("Outlook.Application")

    Nun weis ich nicht mehr weiter und währe froh um Eure unterstützung.

    Wünsche einen schönen Tag

    Freundliche Grüsse

    Rémy Grenacher

    Mittwoch, 19. Juli 2017 08:40

Alle Antworten

  • Da fehlt die sog. COM-Registrierung von Outlook im System.
    Per Regedit kann man da überprüfen:

    In HKCR muss die Id Outlook.Application registriert sein.
    Den Unterschlüssel CLSID muss man dann weiter suchen und in den dortigen Unterschlüsseln steht dann bei InprocServer32/LocalServer32 (ggf. auch ohne 32) der Verweis auf die Laufzeitobjekte.

    Auf einem 64-Bit System müssen die Einträge zusätzlich in HKCR\WOW6432Node\CLSID für 32-Biit-Anwendungen eingetragen sein. Notfalls lassen sich diese kopieren.

    Wenn diese aber vorhanden sind, kann es sich noch um eine Inkompatibilirät zwischen 32/64-Bit handeln.

    In älteren Office-Versionen ließen sich diese Registry-Einträge durch einen Aufruf "Anwendung.exe /regserver" wieder eintragen. Seit der Version 2013 hat Microsft diesesn Aufruf aber entfernt.
    Hier hilft tatsächlich nur eine Neuinstallation oder die Übernahme der Reg-Einträge (Export/Import) von einem funktionierenden System. Dabei sind ggf. nur die Pfade zu korrigieren.

    Mit meiner eigenen Anwendung (BI-Suite) hatte ich ein ähnliches Problem:
    Durch irgend einen Update von Microsoft wurde HKCR-Einträge entfernt!
    Meine Anwendung funktionierte nicht mehr. Erst eine Reparatur-Installation brachte den gewünschten Erfolg.

    Aber auch hier hat Microsoft geschlampt. Die Office-Reparatur führt keine Neuregistrierung durch!
    Nur die Neuinstallation (natürlich mit Deinstallation vorher).

    Ich weiß gar nicht, wie das mit Office 365 oder OneClick-Versionen funktionieren soll, wenn nichts installiert wird und somit auch keine COM-Registrierung erfolgt. Wird das die Verabschiedung der "externen Steuerung"?


    • Bearbeitet bfuerchau Mittwoch, 19. Juli 2017 11:16
    Mittwoch, 19. Juli 2017 11:15
  • Danke für die Information

    Die CLID habe ich bereits überprüft (auf meinem Privaten Notebook - aber auch da läuft das Makro!). Leider habe ich in meiner Firma keine Administrationsrechte. ("bin nur Excel Anwender")

    Habe aber vorläufig mit der Early Bindung gelöst. Damit läuft es auf beiden Systemen (32- und 64-bit). Werde dan einfach beim nächsten Officewechsel wieder das Problem haben, dass ich zwei Versionen machen oder eine Weiche einbauen muss.

    Für mich ist damit das Problem vorläufig gelöss.

    Danke für Eure Bemühungen.

    Mittwoch, 19. Juli 2017 12:39
  • Nein, meistens ist dem bei Office ganau nicht so.
    Die CLSID's von Office haben sich seit Office 97 nicht geändert.
    Somit bekommst du bei EarlyBinding kein Problem.

    Du bekommst nur dann Probleme, wenn du auf Objekte/Eigenschaften/Methoden von älternen Versionen zugreifst, die dann noch nicht existerten.

    Für den Bereich AS/400 (iSeries, i5, system i) habe ich eine Excel-Addin Upload/400 mit Excel 97 entwickelt.
    Dieses läuft seit dem bis zur heutigen 2016er Version.
    Updates/Fehlerbehebungen mache ich heute noch mit Excel2003 in einer XP-VM, damit ich immer noch schön kompatibel bleibe.

    Also wirst auch du da kein Problem haben.

    PS eine Ausnahme gibt es noch:
    Solltest du für ein AddIn eigene Ribbons erstellt haben, so ist das leider tatsächlich in jeder Version anders, da hierfür XML-Strukturen vorgehalten werden müssen.
    Deshalb nehme ich noch Excel2003, da das die letzte Version mit Symbolleiste war, die im Ribbon automatisch dann auf die Gruppe "AddIn" übernommen wird.
    Mittwoch, 19. Juli 2017 14:41