Access - MOVER ARCHIVOS DE CARPETA

 
Vista:

MOVER ARCHIVOS DE CARPETA

Publicado por Ramon (11 intervenciones) el 07/05/2009 12:44:26
Hola, lo que pretendo es MOVER una serie de archivos que tengo de una carpeta a otra carpeta, tan solo que en la carpeta ORIGEN existen archivos que tienen el nombre BL001*.TOT, BL002*.TOT, BL003*.TOT, BL004*.TOT, BL005*.TOT
Lo que me interesa es MOVER en un momento dado (cuando haga clic en un botón) sólo los archivos que por ejemplo sean BL001*.TOT y NO los demás y que esos archivos BL001*.TOT se borren de la carpeta ORIGEN, claro, supongo que al moverlos los quita de la carpeta origen.
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:MOVER ARCHIVOS DE CARPETA

Publicado por mi menda (1111 intervenciones) el 09/05/2009 12:41:35
Hola:
Primero debes de activar la referencia Microsoft Scripting Runtime, y sustituye la barra de división "/" por la barra invertida, he puesto el signo de división, ya que la barra invertida no sale en el editor del foro.

Private Sub MiBoton_Click()

Dim fs As New FileSystemObject
Dim fi As File, fo As Folder

Dim strArchivo As String
Dim strDestino As String

On Error GoTo moverError

Set fo = fs.GetFolder("C:/etc/Carpeta de los documentos")
strDestino = "C:/etc/Carpeta de destino/"

For Each fi In fo.Files
If Right(fi.Name, 3) = "TOT" Then
strArchivo = fo.Path & "/" & fi.Name
fs.MoveFile strArchivo, strDestino
End If
Next

set fs = Nothing
set fo = Nothing

On Error GoTo 0
Exit Sub

moverError:
MsgBox Err.Description,,"Error Nº: " & Err.Number
End Sub

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MOVER ARCHIVOS DE CARPETA

Publicado por Ramón (3 intervenciones) el 12/05/2009 13:47:30
Hola, "mi menda", he probado tu código y funciona a la perfección, pero tal como lo has hecho es para que mueva TODOS los ficheros de una carepta ORIGEN a una carpeta DESTINO con EXTENSION ".TOT".
Te digo que funciona perfectamente, pero lo que quiero es mover SÓLO los archivos BL001*.TOT de una carpeta a otra, los demás archivos ".TOT" no quiero moverlos, los hay BL001*.TOT, BL000*.TOT, BL002*.TOT, BL003*.TOT, etc...
En un momento dado me interesa SOLO mover por ejemplo los BL001 ó los BL004 y no los demás. Mi idea es crear un botón para cada BL, es decir para los BL001 un botón con un evetno, para los BL002 otro botón, para los BL003 otro botón.. ¿no?

¿me puedes ayudar?
Muchas Gracias "mi menda", eres "cojonudo".-
Gracias.
Ramón
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MOVER ARCHIVOS DE CARPETA

Publicado por mi menda (1111 intervenciones) el 13/05/2009 00:16:18
Hola:
Te puedes crear un cuadro combinado con los valores:
BL000
BL001
BL002
Etc..
lo llamamos por ejemplo: cboArchivos.
Luego sustituye esto:

For Each fi In fo.Files
If Right(fi.Name, 3) = "TOT" Then
strArchivo = fo.Path & "/" & fi.Name
fs.MoveFile strArchivo, strDestino
End If
Next

Por esto:

If IsNull(cboArchivos) Then
MsgBox "Seleccione un archivo para mover",,"Validación"
cboArchivos.SetFocus
Exit Sub
End If

For Each fi In fo.Files
If InStr(fi.Name, cboArchivos) > 0 Then
strArchivo = fo.Path & "/" & fi.Name
fs.MoveFile strArchivo, strDestino
End If
Next

No he chequeado la extensión .TOT, porque supongo que no tendrás archivos que no sean de ese tipo con el nombre BL000, etc..

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MOVER ARCHIVOS DE CARPETA

Publicado por Ramón (3 intervenciones) el 13/05/2009 23:38:53
Hola "mi menda", he probado con el código que me has enviado y lo que hace es que mueve todos los archivos de la carpeta origen a la carpeta destino, sean BL001, BL002, etc... (fijate en los 5 primeros digitos y verás como varían)
En la carpeta ORIGEN existen archivos llamados:

BL00006420090406115526.tot
BL00006552090406115526.tot
BL00006766090406115526.tot

BL00107420090406115526.tot
BL00108420090406115526.tot
BL00109420090406115526.tot
BL00103420090406115526.tot

BL00206421090406115526.tot
BL00206424090406115526.tot
BL00206425090406115526.tot

BL00306420090406115526.tot
BL00406420090406115526.tot
BL00506420090406115526.tot
BL00606420090406115526.tot
BL00706420090406115526.tot
BL00806420090406115526.tot
etc....

Los BL000 son de CARNICERIA
Los BL001 son de CHARCUTERIA
Los BL002 son de PESCADERIA
Los BL003 son de PANADERIA
Los BL004 son de FRUTAS&VERDURAS
y así sucesivamente para las demás secciones.

Como verás pueden haber VARIOS archivos que empiecen por los mismos 5 caracteres. Lo que pretendo es poder MOVER, en un momento dado, por ejemplo, sólo los archivos de CARNICERIA a otra carpeta ó sea los BL000*.TOT
ó sea todos los archivos que empiecen por BL000 y tengan a continuación los caracteres que tengan, por ese motivo te puse el " * " (asterisco) como comodín en los anteriores comentarios, en este caso y según el ejemplo de archivos que te he puesto arriba movería sólo los siguientes archivos de CARNICERÍA:

BL00006420090406115526.tot
BL00006552090406115526.tot
BL00006766090406115526.tot

Los demás archivos BL no se moverían de su sitio.
Si me dices otra vez que lo ponga en un CUADRO COMBINADO, por favor dime dónde tengo que poner el EVENTO, si en "Al hacer CLIC", "Antes de Actualizar", "Después de Actgualizar"...??? dónde debo ponerlo??, de todas formas tampoco tengo inconveniente en poner cada evento en un botón diferente
pero me parece mas elegante como dices tú, un cuadro combinado. queda mejor.

Espero me hayas pillao la idea, y me puedas ayudar.
Te agradezco muchisimo tu ayuda, eres una persona fenomenal.

Gracias mi menda.
Ramón
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MOVER ARCHIVOS DE CARPETA

Publicado por mi menda (1111 intervenciones) el 18/05/2009 11:22:42
Hola:
Creas el cuadro combinado y el código lo pones en un botón de comando. La función InStr() lo que hace es buscar una subcadena dentro de una cadena, es decir buscará la subcadena BL000 que la toma del cuadro combinado, dentro de la cadena BL00006420090406115526.tot que es el nombre del archivo, sí la subcadena existe dentro de la cadena, devuelve la posición donde se encuentra, en este caso devolvería 1, por eso ponemos que sea mayor de 0, sí devuelve mayor que 0 es que existe la subcadena (InStr(fi.Name,cboArchivos)>0).
Así que teoricamente solo moverá los archivos que contengan la subcadena y no los demás.

Para que sea más comodo puedes crear el cuadro combinado con 2 columnas y poner la primera a un ancho de 0cm. y esta será la columna dependiente:

Columna0----Columna1

---BL000 --- CARNICERIA
---BL001 --- CHARCUTERIA
---BL002 --- PESCADERIA
---BL003 --- PANADERIA
---BL004 --- FRUTAS&VERDURAS

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MOVER ARCHIVOS DE CARPETA

Publicado por Ramón (3 intervenciones) el 18/05/2009 13:31:09
Gracias "mi menda", ya lo tengo claro, funciona perfectamente. Muchisimas gracias por tu ayuda, de verdad, eres genial.
Graciassss, graciassssssss, graciasssssssssssss..
Ramón
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar