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

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 Teletreks
01/10/2007 - 10:27 | Informe spam
Gracias Héctor, la opción con MS Office 12.0 Access Database Engine Object
Library funciona perfectamente.

Como siempre me has ayudado enormemente.

Saludos y gracias.



"Héctor Miguel" escribió:

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.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida