Jump to content

Perdida de referencias en formulas


Recommended Posts

Saludos:

Gracias de antemano por su ayuda cada vez que me tranco. En esta ocasión tengo unos informes que se alimentan de una Tabla Master la cual reside en el mismo Workbook. Las fórmulas de estos informes están en cada celda (vlookup, countifs, sumifs, etc.).  De esta manera todo funciona correctamente.

Pero ahora queremos mover la Tabla Master a Access y que Excel se alimente de esa Tabla Master desde Access. Esto lo logré con este código:

Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Dim l As ListObject
Dim q As QueryTable
Dim s As String


hojUsr_TablaMaster.Cells.Delete
'CONEXION A LA BASE DE DATOS

s = "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Jet OLEDB:Database Password=CODMON;Data Source="
s = s & "O:\DatabaseInformesCOD.mdb"
Set l = hojUsr_TablaMaster.ListObjects.Add(xlSrcExternal, s, , xlYes, hojUsr_TablaMaster.Cells(1, "A"))
Set q = l.QueryTable
q.SavePassword = False
q.CommandType = xlCmdTable
q.CommandText = "TablaSubAlim"       
'Este es el nombre de la Tabla en Access
q.Refresh

End Sub

Cuando corro este código logro extraer la TablaMaster desde Access y vaciarla en Excel en la pestaña correspondiente. Sin embargo las fórmulas que están escritas en las celdas de los informes pierden la referencia y pierdo toda la información de los informes. 

Investigando un poco el código aprendí que las celdas que contienen fórmulas en los informes pierden la referencia cuando corro la línea del código hojUsr_TablaMaster.Cells.Delete ya que borro toda la información de esa pestaña. Sin embargo, cambié esa línea de código por: 

hojUsr_TablaMaster.Range(Rango).Select 

Selection.ClearContents

Con este cambio en el código las celdas con fórmulas en las pestañas de informes no pierden la referencia pero me ocurre otro error en la línea del código:                                                                    Set l = hojUsr_TablaMaster.ListObjects.Add(xlSrcExternal, s, , xlYes, hojUsr_TablaMaster.Cells(1, "A"))

El error me dice: que no puede haber una tabla sobre otra tabla.

Me gustaría saber si hay una solución a este problema. No quisiera tener que escribir estas fórmulas en código VBA en las pestañas de informes ya que se pone lento.

Espero haberme explicado.

 

Gracias!

No puedo enviar el archivo por privacidad de la compañía.

 

 

 

 

 

 

Link to post
Share on other sites

Has probado o tienes información sobre Power Pivot ?, si lo que haces simplemente es un exportación de los datos de access a excel no necesitas ninguna macro excel es capas de realizar la exportación a una tabla plana o dinámica, ademas si utilizas Power Pivot puedes crear las "formulas" internamente.

Pero solo estoy suponiendo ya que desconozco la estructura de tu base ni lo que quieres hacer en excel. 

Si te parece puedes subir un ejemplo del accces y el excel, obviamente con datos ficticios pero con un formato fiel al original para que no tengas problemas para adaptarlo.

Saludos.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×
×
  • Create New...

Important Information

Privacy Policy