¿Como puedo hacer una macro desde Access que me copie los archivos de los últimos 10 días?

Necesito que al ejecutar una macro en Access, me copie los ficheros de los últimos 10 días de una carpeta que está en red, y me los pase a mi disco duro. Para luego ejecutar un programa y me haga ciertas operaciones.

1 respuesta

Respuesta
3

No es muy complicado de hacer, prueba esto (no lleva control de errores de ningún tipo):

1º/ Crea un módulo nuevo en tu BD, y llámalo, por ejemplo, mdlCopiar

2º/ Pega este código:

Public Sub subCopiaArchivos()
Const rutaRed As String="Z:\Archivos\"  'Aquí la ruta a la carpeta de red, acabada con la barra
Const rutaLocal As String="C:\Users\txikitin\Archivos\"  'Aquí la ruta a la carpeta local, acabada con la barra
Dim fso As Object
Dim fsc As Object
Dim fsa As Object
Dim fsas As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set fsc = fso.GetFolder(rutaRed)
Set fsas = fsc.Files
For Each fsa In fsas
   If DateDiff("d", fsa.DateCreated, Date) <= 10 Then fsa.Copy rutaLocal
Next fsa
MsgBox "Archivos copiados"
Set fsas = Nothing
Set fsc = Nothing
Set fso = Nothing
End Sub

3º/ Cuando quieras hacer la copia de archivos, desde un botón, u otro procedimiento, simplemente los llamas:

Call subCopiaArchivos

Un saludo.


     bit.ly/ForoNkSv 

Muchísimas gracias. Es lo que necesitaba. Ahora una pequeña cosa más si no es muy difícil,  ya que estoy atascado. Necesitaría se ejecutará a las 6.30, 14.30 y 22.30, pero soy incapaz de hacerlo. ¿podrías ayudarme?

Muchísimas gracias por todo.

Se puede hacer, pero has de tener siempre la BD abierta y el formulario en el que pongas el código también, si no, no funcionará:

En el evento "al cronometro" del formulario que quieras (que recuerda, ha de estar siempre abierto, aunque sea oculto), pones:

If Time() = #6:30:00 AM# OR Time() = #14:30:00 PM# Or Time() = #22:30:00 PM# Then Call subCopiaArchivos

Y en el evento "Al cargar" de ese formulario:

Me.TimerInterval=1000

¡Gracias! Me funciona perfecto.

Muy buenas, siento ser tan pesado, pero ahora tengo una ultima duda. 

Necesito que una consulta se me ejecute todos los días 1 de cada mes. Estoy tratando de hacerlo de la misma manera que para la hora. Pero no me funciona. ¿Me podrías decir que hago mal?

If Now = #6/8/2018 4:14:08 PM# Then Call primerosdemes

Muchas gracias por todo.

Si pones esa condición, el código se ejecuta el día 6 de agosto a las 16:14:08, no a primeros de cada mes. Aunque la expresión de la condición si es correcta y a esa hora del día 6 te tendría que ejecutar el código de prinerosdemes.

Para que tu código se ejecute cada día 1, la condición podría ser:

If Day(Date)=1 Then.... 

Si el código lo casa a poner en el evento timer, debes poner además una hora para que ni se ejecute continuamente, por ejemplo:

If Day(Date)=1And Time() = #6:30:00 AM# Then.... 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas