Macro que no me funciona con office 2007

27/09/2007 - 16:44 por Teletreks | Informe spam
Hola a todos, me gustaría que alguien me explicara pq esta macro no me
funciona con office 2007:

Sub AcutalizaDiario()
'
Dim wks As DAO.Workspace, db As DAO.Database, qry As DAO.QueryDef, td As
DAO.TableDef, fld As DAO.Field
Dim ListaAsientos As String, lista_asientos As String
Set wks = DAO.Workspaces(0)
Set db = wks.OpenDatabase(ThisWorkbook.Path & "\BASEDATOS.accdb")
Set td = db.CreateTableDef(ListaAsientos)
db.Execute "delete * from (999_AsientosConsultados)"
Set qry = db.QueryDefs("999_CreacionAsientosConsultados")
qry.Execute
Set qry = Nothing
db.Close
Set db = Nothing
wks.Close
Set wks = Nothing
Range("B5").Select
ActiveSheet.PivotTables("Tabla dinámica2").PivotCache.Refresh
End Sub

con office 2003 funcionaba perfectamente.
La instrucción que falla es "Set db = wks.OpenDatabase(ThisWorkbook.Path &
"\BASEDATOS.accdb")", generando el error 3343 en tiempo de ejecución: no se
reconoce el formato de la base de datos.

Las referencias que tengo activadas son las siguientes:

Visual Basic for Applications
Microsfot Excel 12.0 Object Library
OLE Automation
Microsfot Office 12.0 Object Library
Microsfot DAO 3.6 Object Library

En resumen esta macro realiza los siguiente: va una BD, ejecuta una consulta
y genera una tabla que es leida desde excel mediante una tabla dinámica.


Gracias por las molestias tomadas.

Saludos
 

Leer las respuestas

#1 Héctor Miguel
29/09/2007 - 10:40 | Informe spam
hola, 'anonimo/a' !

... me gustaria que alguien me explicara pq esta macro no me funciona con office 2007:



es probable que DAO 3.6 ya no alcance a *reconocer* el nuevo formato de BBDD en access [accdb] -?-

-> prueba estableciendo una referencia en tu proyecto de macros [excel/office 2007]
a la biblioteca de objetos: -> MS Office 12.0 Access Database Engine Object Library

-> prueba cambiando de DAO... a: -> ADO [minimo con la version 2.8]

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
Sub AcutalizaDiario()
Dim wks As DAO.Workspace, db As DAO.Database, qry As DAO.QueryDef, td As DAO.TableDef, fld As DAO.Field
Dim ListaAsientos As String, lista_asientos As String
Set wks = DAO.Workspaces(0)
Set db = wks.OpenDatabase(ThisWorkbook.Path & "\BASEDATOS.accdb")
Set td = db.CreateTableDef(ListaAsientos)
db.Execute "delete * from (999_AsientosConsultados)"
Set qry = db.QueryDefs("999_CreacionAsientosConsultados")
qry.Execute
Set qry = Nothing
db.Close
Set db = Nothing
wks.Close
Set wks = Nothing
Range("B5").Select
ActiveSheet.PivotTables("Tabla dinamica2").PivotCache.Refresh
End Sub

con office 2003 funcionaba perfectamente.
La instruccion que falla es "Set db = wks.OpenDatabase(ThisWorkbook.Path & "\BASEDATOS.accdb")"
generando el error 3343 en tiempo de ejecucion: no se reconoce el formato de la base de datos.

Las referencias que tengo activadas son las siguientes:

Visual Basic for Applications
Microsfot Excel 12.0 Object Library
OLE Automation
Microsfot Office 12.0 Object Library
Microsfot DAO 3.6 Object Library

En resumen esta macro realiza los siguiente: va una BD, ejecuta una consulta
y genera una tabla que es leida desde excel mediante una tabla dinamica.

Preguntas similares