Access - NECESITO ACTIVAR LIBRO EXCEL ABIERTO DESDE ACCESS

   
Vista:

NECESITO ACTIVAR LIBRO EXCEL ABIERTO DESDE ACCESS

Publicado por diego (2 intervenciones) el 21/03/2016 20:44:23
Necesito ayuda por favor. Voy a ver si puedo sintetizar...

Tengo una mdb y un xlsm que los uso en forma complementaria.

El mdb lo uso para elegir registros que quedan en una tabla temporal y el excel necesita traer esos mismos registros alojados en esa tabla temporal en una hoja oculta.

Lo que necesito es que mediante codigo vb desde esa base mdb (ejecutado por un boton de comando) pueda llamar al libro excel que ya tengo abierto (NO puedo volver a abrirlo porque es muy pesado) para poder ejecutar una macro que tengo alli que es justamente la que me trae los datos de esa tabla temporal.

Hasta ahora no he encontrado solucion y por eso acudo a esta comunidad.

Tengo esto:

Function COTI_ESPONTANEA()
On Error GoTo COTI_ESPONTANEA_Err

DoCmd.SetWarnings False
DoCmd.OpenQuery "C_COTIZADOR V2 - CREA ITEMSCOT3", acViewNormal, acEdit
'DoCmd.OpenQuery "C_COTIZADOR V2 - CREA ITEMSCOT2", acViewNormal, acEdit
DoCmd.OpenQuery "C_COTIZADOR V2 - LIMPIA TILDES", acViewNormal, acEdit

'aqui empiezo a llamar al excel que tengo abierto y es donde no puedo avanzar

Dim xl As Object
Set xl = CreateObject("Excel.Application")
xl.Visible = True
'Set wb = xl.Workbooks.Open("c:\drogueria\cotizador.xlsm") ' y aca esta el tema... me vuelve a abrir y no se como llamar a este libro que ya lo tengo abierto


xl.Application.Run "c:\drogueria\COTIZADOR.xlsm!COTIESPONTANEA" ' esta es la macro y esto anda bien

COTI_ESPONTANEA_Exit:
Exit Function

COTI_ESPONTANEA_Err:
MsgBox Error$
Resume COTI_ESPONTANEA_Exit

End Function

Tengo Office 2010

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Neckkito

NECESITO ACTIVAR LIBRO EXCEL ABIERTO DESDE ACCESS

Publicado por Neckkito (1104 intervenciones) el 15/04/2016 15:03:43
Hola!

Para llamar a un Excel que ya existe no utilices la función CreateObject(); utiliza la función GetObject().

Por otra parte si la aplicación es de uso propio te recomendaría que utilizaras el early binding.

Finalmente, siempre que crees una instancia, mi consejo sería que, al final del proceso, la destruyeras para evitarte problemas.

Dicho esto...

1.- Registra la referencia "Microsoft Excel x.y Object Library" (x.y se corresponden con la versión de Office que tengas).
2.- En tu código borra todo lo que haga referencia a la instancia de Excel y lo sustituyes por esto:

...
1
2
3
4
5
6
7
Dim miExcel As Excel.Workbook
    Set miExcel = GetObject("c:/RutaDelExcel/nombreExcel.extension")
    With miExcel.Application
        .Visible = True
        .Run ("NombreMacro")
    End With
    Set miExcel = Nothing
...

Ojo! El código NO te funcionará (o te dará error) si el Excel no está abierto en el momento de ejecutarlo.

A ver si así te funciona como quieres.

Un saludo,

Neckkito
http://bit.ly/neckkito
http://nksvaccessolutions.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

NECESITO ACTIVAR LIBRO EXCEL ABIERTO DESDE ACCESS

Publicado por diego (2 intervenciones) el 15/04/2016 21:10:31
Neckkito... gente como vos hacen la vida mas simple !!! sos un grande, de manera muy sencilla solucionaste una problema que para mi era enorme y que demostraste que no era tanto...
Mil gracias Neckkito !!!!!!!!!!!!!!

Diego
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar