Activación automática diferentes objetos OLE

Tengo dos marcos de objeto independientes (OLEind1 y OLEind2) en un formulario con las siguientes mismas propiedades para los dos:

  • Tipo OLE: Incrustado
  • Tipo OLE permitido: Ambos
  • Clase OLE: Microsoft Excel Macro-Enabled 12
  • Clase: SheetMacroEnabled. 12
  • Opciones de actualización: Automática
  • Tipo de presentación: Contenido
  • Habilitado: Sí
  • Bloqueado: No
  • ...
  • Activación automática: RecibirEnfoque

El OLEind1 es una tabla dinámica y el OLEind2 es un gráfico dinámico. Cuando hago doble clic en cualquiera de los dos OLE (activación en contexto), se actualizan los valores. Para pasar de un OLE a otro

La idea es que cuando se cargue el formulario, se actualicen automáticamente los valores de los dos objetos OLE.

Con este propósito, he escrito los siguientes códigos VBA pero sin éxito:

  • PRUEBA 1

Private Sub Form_Load()

...

OLEind1. SetFocus ‘pongo el enfoque en el objeto OLEind1

OLEind2. SetFocus ‘pongo el enfoque en el objeto OLEind2

...

End Sub

  • Resultado PRUEBA 1

El OLEind2 se muestra en activación en contexto con los datos actualizados, pero el OLEind1 no se ha actualizado.

  • PRUEBA 2

Private Sub Form_Load()

...

OLEind1.Action = acOLEActivate

OLEind1.Verb = acOLEVerbOpen

OLEind1.Action = acOLEUpdate

OLEind1.Action = acOLEClose

OLEind1.Requery

OLEind2.Action = acOLEActivate

OLEind2.Verb = acOLEVerbOpen

OLEind2.Action = acOLEUpdate

OLEind2.Action = acOLEClose

OLEind2.Requery

...

End Sub

  • Resultado PRUEBA 2

Se cuelga MS-Excel. El problema es que, según la ayuda de msdn.microsoft.com, la propiedad “ObjectFrame. Action (acceso)” tiene los valores de propiedad de “acción” restringidos al valor de la propiedad Enabled y Locked.

  • PRUEBA 3

Private Sub Form_Load()

...

OLEind1.SetFocus

OLEind1.Action = acOLEClose

OLEind2.SetFocus

OLEind2.Action = acOLEClose

...

End Sub

  • Resultado PRUEBA 3

No se actualiza ninguno de los dos OLE.

¿A alguien se le ocurre cómo puedo actualizar automáticamente los dos objetos OLE al cargar el formulario?

Añade tu respuesta

Haz clic para o