Copiar una carpeta mediante código vba -access

Necesito copiar un archivo a una misma carpeta siempre, en el caso de que esta carpeta cambie de ruta el archivo que tengo que copiar siempre lo quiero en esa carpeta, entonces una ruta fija no me sirve porque ira cambiando de sitio y es para no ir al código e ir cambiando la ruta cada vez que se cambia..

Respuesta

Tu pregunta es quizá un poco confusa o difícil de interpretar. Lo que sí está claro es que si cambias la ruta de la carpeta tendrás que informar a Access de que esa ruta ha cambiado.

Una manera relativamente fácil de conseguirlo es la siguiente:

- Créate una tabla "TRuta" con un sólo campo llamado [RutaCpta]. Ahí guardarás la ruta de la carpeta de los archivos, añadiéndole siempre la contrabarra al final.

- En la tabla donde guardas la ruta de los archivos sólo tendrás que guardar el nombre del archivo y su extensión.

- Créate un módulo estándar y escribe esta función:

...

Public function obtengoRuta() as string

Dim laRuta as string

laRuta = dlookup("RutaCpta","TRuta")

obtengoRuta=laRuta

end sub

...

Supongamos:

1.- Que la ruta que tienes en TRuta es "C:\Datos\MisArchivos\"

2.- Que en un formulario tienes un registro y, en el campo donde te muestra (según las indicaciones que te he dado) el campo [NomArchivo] con un valor "Datos2.pdf"

3.- Que tienes un botón llamado cmdAbroArchivo (Propiedades -> Otras -> Nombre).

En el evento "Al hacer click" de ese botón deberías escribir, por ejemplo, este código:

...

Private Sub cmdAbroArchivo_Click()

Dim elArchivo as string

Dim rutaEntera as string

elArchivo=nz(me.[NomArchivo].value,"")

If elArchivo="" then exit sub 'Esto es por si no hay valor en el campo

rutaEntera=obtengoRuta & elArchivo

application.followhyperlink rutaEntera

End sub

...

Con esto, cuando cambies la ruta, la única operación que debes realizar es editar el contenido de la tabla TRuta y sustituir el valor del registro existente por el nuevo (no te olvides de la contrabarra al final).

En pocas palabras, que si ahora mueves la carpeta "MisArchivos" directamente a la unidad E:, por ejemplo, en TRutas sólo tienes que sustituir:

"C:\Datos\MisArchivos\"

por

"E:\MisArchivos\"

Y listo.

A ver si era esto lo que querías y, si lo era, a ver si te sale.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas