Un Usuario hizo la siguiente pregunta
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 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