Cómo saber con vba la carpeta donde está el archivo vinculado a la base de datos principal

Tengo una base de datos principal vinculada a un archivos de base de datos que contiene las tablas. Este archivo que contiene las tablas no está en la misma carpeta que la base de datos principal. ¿Hay alguna forma de guardar en una variable la dirección (disco duro, carpetas, subcarpeta...) donde está alojado el archivo con las tablas?

2 Respuestas

Respuesta
1

También pude utilizar:

Dim db as Datablase

Dim tdf As TableDef

Set db = CurrentDb
Set tdf = db.TableDefs(strTabla)
' Obtiene el nombre del archivo vinculado
vinculo = tdf.Connect 

... sigue más código

En este caso se pasa una de las tablas vinculadas en "strTabla".

Cómo ahora no se puede adjuntar código si quiere escríbame a [email protected] y le suministro la función.

Respuesta
1

Si hay alguna tabla vinculada, así se puede obtener la ruta, pero hay que recordar que puede tener más de una tabla vinculada y que cada tabla puede pertenecer a una base de datos diferente.

MsgBox DFirst("Database", "MSysObjects", "Database <> ''")

Para conocer la vinculación de una tabla concreta, solo se ha de utilizar en la condición, en lugar de:

Database <> '' ===>>> Database ='nombre-de-la-tabla'

Lo he probado, pero me da la dirección de la carpeta con el nombre del archivo. Por ejemplo, me dice "E:\BBDD\GOdatos.accdb" cuando necesito "E:\BBDD" o "E:\BBDD\". ¿Habría alguna forma de que me diese solo la dirección de la carpeta?

Si, se puede recortar el nombre devuelto para obtener la carpeta, solo hay que aplicarle la función LEFT que nos permite recortar una cadena de texto y la función Instr par obtener la posición de la barra, la función de búsqueda puede comenzar por el final de la cadena añadiéndole 'rev'.

Quedando algo como:

Msg.. left(la-funcion), ins.. rev(la-funcion, "\"))

Las limitaciones del foro no consienten mas idioma que el castellano (posiblemente para evitar código malicioso)
La-función es la misma, se requiere repetirla para obtener el nombre y el punto de corte.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas