Saltar al contenido

El componente ActiveX no puede crear el objeto – error 429

Un Usuario hizo la siguiente pregunta

Stefan Schnell , Sandra Rossi

Hola,

Quiero llamar a Funciones de SAP en Excel para MS Office 365 (64 bits) y aparece el error «El componente ActiveX no puede crear el objeto – error 429«en ejecución.

Probé los trucos de registro como Stefan sugirió aquí, pero aún obtengo el error.

A continuación se muestran los pasos que tomé.

  • Busque el GUID de su objeto COM en HKey_Classes_Root Wow6432Node CLSID [GUID]
  • Una vez instalado, agregue un nuevo valor REG_SZ (cable). El nombre debe ser AppID y los datos deben ser el mismo GUID de objeto COM que buscó
  • Agregue una nueva clave en HKey_Classes_Root Wow6432Node AppID
    La nueva clave debe llamarse igual que el objeto GUID
  • Debajo de la nueva clave que acaba de agregar, agregue un nuevo valor REG_SZ (cadena) y llámelo DllSurrogate. Deja el valor en blanco

  • Cree una nueva clave en HKey_Local_Machine Software Classes AppID
    Nuevamente, la nueva clave debe llamarse igual que el GUID del objeto COM. No es necesario agregar valores en esta clave. (Esta entrada ya existe con los valores a continuación. Supongo que se generó automáticamente y con una cadena de nombre DllSurrogate … ¿Necesito eliminar una entrada DllSurrogate desde aquí?)

A continuación se muestra el código VB que estoy buscando

Option Explicit


Public Functions As SAPFunctionsOCX.SAPFunctions
Private LogonControl As SAPLogonCtrl.SAPLogonControl
Private R3Connection As SAPLogonCtrl.Connection
Public TableFactory As SAPTableFactory
Dim Func As SAPFunctionsOCX.Function
Dim objBAPIControl, objgetaddress As Object

----------------------------------------------------------
Sub Button1_Click()
Dim retcd        As Boolean
Dim SilentLogon  As Boolean


' Set Connection
Set LogonControl = CreateObject("SAP.LogonControl.1")
Set objBAPIControl = CreateObject("SAP.Functions")
Set R3Connection = LogonControl.NewConnection
R3Connection.Client = "100"
R3Connection.ApplicationServer = "<saphost>"
R3Connection.Language = "EN"
R3Connection.User = "<username>"
R3Connection.Password = "<password>"
R3Connection.System = "<SID>"
R3Connection.SystemNumber = "<SNUMBER>"
R3Connection.UseSAPLogonIni = False
SilentLogon = False
retcd = R3Connection.Logon(0, SilentLogon)
If retcd <> True Then MsgBox "Logon failed": Exit Sub
objBAPIControl.Connection = R3Connection
End Sub

y a continuación está el error que recibo

1.png
(22,4 kB)

2.png
(19,2 kB)

3.png
(19,2 kB)

4.png
(51,4 kB)

1 respuesta

  • Hola Vijay Sharma,

    su primera entrada de AppID está en el lugar incorrecto. El valor de AppID debe ser establecido directamente por la clave GUID, no por la clave InprocServer32 como en su caso.

    Lo probé con wdtfuncu.ocx, la versión unicode de wdtfuncs.ocx, y funciona como se describe.
    El valor DllSurrogate en HKLM hive no necesita ser eliminado, como escribió Sandra, es una copia automática que no bloquea la función. Después de todo, el informe tiene más de seis años, supongo que todavía no ha habido una duplicación automática de las entradas del registro.

    Todo lo mejor
    Stefan

    wdtfuncu.jpg
    (36,8 kB)