|
Responder
|
| Autor | |
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Tema: Importar tabla desde excel a otra bbddEnviado: 16/Agosto/2023 a las 10:57 |
|
Hola
Quiero importar un fichero excel a una tabla de access que está en otra base de datos (y que no está abierta) ¿me pueden ayudar? Hasta ahora, venía haciendo un TransferSpreadsheet pero veo que solo sirve para la bbdd actual. La tabla está en otra bbdd y la tengo vinculada en la bbdd actual. También me interesaría actualizar la vinculación: Dim XlsRuta As String Dim tbl As String XlsRuta = "C:\Documents\Informes\Tabla1.xlsx" tbl = "Tabla1" DoCmd.TransferSpreadsheet acImport, 8, tbl, XlsRuta, True Gracias
Editado por paloma - 16/Agosto/2023 a las 12:09 |
|
![]() |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14926 |
Enviado: 16/Agosto/2023 a las 12:29 |
|
Hola, Abre una instancia de la otra base de datos y realizas la vinculación desde esa otra instancia:
Escrito al vuelo. Un saludo
|
|
![]() |
|
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Enviado: 16/Agosto/2023 a las 12:48 |
|
Gracias xavi. En la línea del TransferSpreadsheet me sale el Error 3734: El usuario Admin de la máquina ha situado la base de datos en un estado que impide que sea abierta o bloqueada. ¿sabes a qué puede deberse?
|
|
![]() |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14926 |
Enviado: 16/Agosto/2023 a las 12:50 |
|
En principio el mensaje está indicando que, o el Excel está abierto o la base de datos destino está abierta.
|
|
![]() |
|
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Enviado: 16/Agosto/2023 a las 12:54 |
|
No tengo nada abierto. El fichero excel lo modifico previamente y antes de hacer la importación lo guardo y lo cierro: ActiveWorkbook.Save xlBk.Close y la base de datos destino tampoco está abierta. No lo entiendo.
|
|
![]() |
|
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Enviado: 16/Agosto/2023 a las 13:30 |
|
Veo que la bbdd destino se queda abierta (laccdb) antes de hacer la importación y puede ser ese el problema. Y creo que es porque antes elimino los registros. Te pongo todo el código: sql = "delete * from Tabla1 CurrentDb.Execute sql Y luego ya la importación: XlsRuta1 = "C:\Documents\tablas.accdb" XlsRuta = "C:\Documents\Informes\Tabla1.xlsx" DoCmd.SetWarnings False Dim app As Application Set app = CreateObject("Access.Application") app.OpenCurrentDatabase XlsRuta1 app.DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Tabla1" XlsRuta, True app.CloseCurrentDatabase Set app = Nothing DoCmd.SetWarnings True ¿cómo puedo hacer para eliminar los registros en la bbdd destino y no en la tabla vinculada?
Editado por paloma - 17/Agosto/2023 a las 10:15 |
|
![]() |
|
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Enviado: 18/Agosto/2023 a las 11:06 |
|
vale, he encontrado el modo, me ha costado porque no controlo casi nada las instancias o conexiones a otras bases de datos. Lo que tenía que añadir es abrir la base de datos destino y correr la sentencia que elimina los registros. Luego después, pasar el TransferSpreadsheet: app.OpenCurrentDatabase XlsRuta1 app.DoCmd.RunSQL sql Pueden cerrar el hilo. ![]() Saludos,
|
|
![]() |
|
paloma
Habitual
Unido: 24/Junio/2010 Estado: Sin conexión Puntos: 139 |
Enviado: 18/Agosto/2023 a las 12:07 |
|
Se puede cerrar el tema
|
|
![]() |
|
Responder
|
|
|
Tweet
|
| Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |