Cambiar nombres y ubicación de una carpeta desde Access

Me gustaría cambiar de nombre y de ubicación los archivos alojados en una carpeta. Las rutas iniciales y finales las tengo en una tabla de Access. Visualizo los datos a través de una consulta y ejecuto el código desde un botón de formulario.

Al ejecutarlo me da error y no entiendo el motivo.

Adjunto código e imagen del error

Private Sub bt_CAMBIAR_NOMBRE_Click()
Dim dbsNorthwind As DAO.Database
Dim rstOrders As DAO.Recordset
Dim ArchivoInicial, ArchivoFinal As String
Set dbsNorthwind = CurrentDb
Set rstOrders = dbsNorthwind.OpenRecordset("5_ARCHIVOS_GESTION")
Do While Not rstOrders.EOF
    ArchivoInicial = [RUTAINICIAL]
    ArchivoFinal = [RUTAFINAL]
    Name ArchivoInicial As ArchivoFinal
    rstOrders.MoveNext
    If rstOrders.EOF = True Then
        End
    Else
        DoCmd.GoToRecord , , acNext
    End If
    Set OutMail = Nothing
    Set OutApp = Nothing
Loop
rstOrders.Close
Set dbsNorthwind = Nothing
Set rstOrders = Nothing
End Sub

3 respuestas

Respuesta
2

Lo que me sorprende es la función tan complicada. No se como están puestas las rutas origen y destino, pero si tengo un formulario como

Cuando pulso el botón puedes ver que el primer archivo Visitas me lo ha pasado a la carpeta BasesPracticas

El segundo CC1.jpg a la carpeta Programas

Etc.

y el código del botón es

DoCmd.GoToRecord , , acFirst
Dim i As Integer
For i = 1 To Me.Recordset.RecordCount
Dim S As String
S = Mid([Ruta], InStrRev([Ruta], "\") + 1)
FileCopy Ruta.Value, "" & Me.Destino & "" & "\" & "" & S & ""
DoCmd.GoToRecord , , acNext
Next

lo de S es para extraer el archivo.

Respuesta
1

Alex: Aunque veo muy pocas probabilidades de acierto, he asumido que una Tabla >>"S_ARCHIVOS_GESTION" tienes 1 Campo Llamado RUTAINICIAL y otro RUTAFINAL y que quieres sustitui el valor del Segundo por el Primero.

Ignoro de donde has sacado el Código del Recordset, pero es un tanto "Pecculiar"

Te propongoel siguiente, pero sin mucha fe de que te vaya bien, por no entender del todo lo que pretendes.

Private Sub bt_CAMBIAR_NOMBRE_Click()
Dim RstOrders As DAO.Recordset
Set rstOrders = CurrentDB.OpenRecordset("5_ARCHIVOS_GESTION")
RstOrders.MoveLast
RstOrders.MoveFirst
Do While Not rstOrders.EOF
    RstOrders.Edit
        RstOrders!RUTAFINAL = RstOrders!RUTAINICIAL
    RstOrders.Update
    RstOrders.MoveNext
    'Set OutMail = Nothing  'Ignoro que hace aquí ésta Línea
    'Set OutApp = Nothing   'Ignoro que hace aquí ésta Línea
Loop
rstOrders.Close
Set rstOrders = Nothing
End Sub

Si no hace lo que quieres, comentas un poco más e intento ayudarte. Saludos >> JTJ

Alex: Se me ha pasado comentarte que hagas antes una copia de tu Tabla, pero imagino que lo habrás tenido en cuenta. Saludos >> JTJ

Respuesta
1

Creo que este es el código:

Muchísimas gracias por la ayuda! Al final he conseguido que funcione de las formas que me habéis indicado.

He ido aprendiendo poco a poco y a través de estos foros. Sin vuestra ayuda, todo sería más complicado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas