Fragensteller
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 Subnach 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
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 Der Suchende Mittwoch, 19. Juli 2017 11:16
-
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.
-
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.