Jump to content
Sign in to follow this  
zero-x

lectura y movimiento de archivos segun condicion

Recommended Posts

Buenas noches

Necesito un  poco de ayuda,

Tengo como 60  directorios con cientos de libros , hay algunos con miles (menos que 3000) y trato catalogar pero en una tarea sin fin

como puedo hacer un codigo en excel que:

1)seleccione me deje seleccionar directorio en particular

2) lea el directorio ,

y si y si alguna parte del archivo dice calculo, cree un directorio y ahi mueva todos archvos que cumplan las condicion de ser de " calculo"

y si  alguna parte del archivo dice algebra , cree un directorio   y ahi mueva todos archvos que cumplan las condicion de ser de " algebra"

...... aqui tantas lineas segun otros tipos de lbros

3)los directorios creados pueden estar en el directorio elegido

(nota: hace tiempo que no veo excel pero entendere cualquier guion con el que me puedan ayudar)

gracias de antemano

 

 

 

 

Share this post


Link to post
Share on other sites

Hola zero-x,

Bueno lo he vuelto a mirar y no me hace falta ejemploB).

Apartir de esto podrias ajustarlo a lo que necesites. Ten en cuenta :

- Para seleccionar la carpeta que quieres revisar, tienes que elegir un archivo cualesquiera de la carpeta Padre. Revisara tambien todas las subcarpetas que haya dentro de las subcarpetas.

- La copia que guarda la hace en la carpeta correspondiente a su categoria.La copia si existe la machaca. Las categorias las he puesto en la hoja 'Categorias'. Puedes quitar y poner las que quieras.

-Las carpetas de las categorias guardadas se cuelgan desde donde se ejecuta la Excel. Modificable al gusto del consumidor.

-Tambien te crea en la hoja 'listado', un listado con las copias de las rutas origen y destino de lo procesado.Para control, mas que todo

En fin, espero este a tu gusto

SAludos

Ikanni

 

 

ListarLibros.rar

Share this post


Link to post
Share on other sites

Muchas gracias Ikanni, me has leido la mente

Dudas

Las comparaciones de "calculo" incluyen variaciones de la palabra ejemplo cálculo,CALCULO, Cálculo, Calculos etc , si no es asi , ¿como se puede hacer para que acepte variaciones.?

peticion

puedes  modificar el guion, para que  los archivos que ya copio , "los borre" , o en vez de copiar que los mueva.(siempre quedaran archivos que no cumplan condicion) .Trate  de arreglar el codigo donde dice fs.CopyFile x fs.MoveFile pero no me resulto

gracias por tu tiempo

Share this post


Link to post
Share on other sites
Hace 11 horas, zero-x dijo:

Muchas gracias Ikanni, me has leido la mente

Dudas

Las comparaciones de "calculo" incluyen variaciones de la palabra ejemplo cálculo,CALCULO, Cálculo, Calculos etc , si no es asi , ¿como se puede hacer para que acepte variaciones.?

 

Ya lo incluye, ¡¡Haz la prueba!! la comparación lo hace con *calculo*. Ose que todos los nombres de archivo que lleven la cadena '*calculo*' te los incluirá. la única duda que me queda es los que lleven tilde. Prueba y sino funciona.Podrias hacerlo de dos maneras:

-Manual: Añadir Calculo y Cálculo al hoja categorias y te buscará por los dos y te creará las dos carpetas. Cuando termine cojes todos los archivos de la carpeta Cálculo y los mueves a la carpeta Calculo.;)

-Automático:Seria modificar/reemplazar la letra con tilde por sin tilde del nombre del archivo a buscar, no el archivo sino la variable que lo trasporta. Y hacer la busqueda con la palabra reemplazada Sino te sale pide ayuda:lol:.  Aunque la manera manual creo es práctica. Ya que en cuanto lo uses y cambies tus libros ya no lo necesitarás mas.:mellow:

Hace 12 horas, zero-x dijo:

peticion

puedes  modificar el guion, para que  los archivos que ya copio , "los borre" , o en vez de copiar que los mueva.(siempre quedaran archivos que no cumplan condicion) .Trate  de arreglar el codigo donde dice fs.CopyFile x fs.MoveFile pero no me resulto

gracias por tu tiempo

Despues del fso.CopyFile ..... pon

Kill archivo

Y a funcionar

 

Share this post


Link to post
Share on other sites
Hace 10 horas, ikanni dijo:

Despues del fso.CopyFile ..... pon

Kill archivo

Y a funcionar

hola

he tratado de hacer lo que dices pero sale ruta inexistente

forma1

 If Dir(rutaC, vbDirectory) = "" Then MkDir rutaC
            miFile = rutaC & "\" & archivo.Name
            fs.CopyFile archivo, miFile
            Kill archivo

Forma 2

 

 If Dir(rutaC, vbDirectory) = "" Then MkDir rutaC
            miFile = rutaC & "\" & archivo.Name
            fs.CopyFile archivo,Kill archivo, miFile

 

que esta mal??
           

 

 

Share this post


Link to post
Share on other sites
Hace 1 hora, ikanni dijo:

fs.CopyFile archivo, miFile
            Kill archivo

Pues no lo se, lo he probado y me funciona.¿Donde te da el error?

lo he puesto tal cual , selecciono carpeta , selecciono cualquier archivo ...."copia ese archivo "  lo "borra" y despues se detiene . me manda en la pantalla principal el mensaje "ruta inexistente" y se detiene. :( ??

Share this post


Link to post
Share on other sites

Comprueba las rutas que va en las variables archivo y MiFile.

Pon así y veras la ruta en la ventana inmediato. Abre la ventana inmediato

fs.CopyFile archivo, miFile

debug.print archivo

debug.print MiFile
            Kill archivo

y nos pones las rutas que te salen en la ventana inmediato. Y vamos viendo

Share this post


Link to post
Share on other sites

hola ahi va lo que me pides

E:\Nueva carpeta\ALGEBRA - EDUARDO BASURTO Y GILBERTO CASTILLO-FREELIBROS.ORG.pdf
E:\ALGEBRA\ALGEBRA - EDUARDO BASURTO Y GILBERTO CASTILLO-FREELIBROS.ORG.pdf

E:\Nueva carpeta\ALGEBRA DE BALDOR.pdf
E:\ALGEBRA\ALGEBRA DE BALDOR.pdf

E:\Nueva carpeta\ALGEBRA DE MATRICES.pdf
E:\ALGEBRA\ALGEBRA DE MATRICES.pdf

E:\Nueva carpeta\ALGEBRA ELEMENTAL-ALLEN R. ANGEL.pdf
E:\ALGEBRA\ALGEBRA ELEMENTAL-ALLEN R. ANGEL.pdf

 

cada  una de ellas es una ejecucion, como pues ver , se hace bien una vez y luego se detiene y en pantalla principal sale ...ruta inexistente  cuando va por el segundo.

probare lo mismo pero dentro del mismo directorio.

E:\Nueva carpeta\ALGEBRA II - ARMANDO ROJO.pdf
E:\Nueva carpeta\ALGEBRA\ALGEBRA II - ARMANDO ROJO.pdf


E:\Nueva carpeta\ALGEBRA INTERMEDIA-ALLEN R. ANGEL.pdf
E:\Nueva carpeta\ALGEBRA\ALGEBRA INTERMEDIA-ALLEN R. ANGEL.pdf


E:\Nueva carpeta\ALGEBRA LEXUS.pdf
E:\Nueva carpeta\ALGEBRA\ALGEBRA LEXUS.pdf

cada  una de ellas es una ejecucion, como pues ver , se hace bien una vez y luego se detiene y en pantalla principal sale ...ruta inexistente  cuando va por el segundo.

 

se detiene , no se porque???

 

Share this post


Link to post
Share on other sites

Si tenias razón no funciona. Me equivoque al poner el kill

Originariamente esta así

   Kill archivo

  ActiveCell = miFile: ActiveCell.Offset(0, 1) = archivo

pues cambia el orden

ActiveCell = miFile: ActiveCell.Offset(0, 1) = archivo

   Kill archivo

y a funcionar


         

Share this post


Link to post
Share on other sites

hola esta pasando algo muy particular , borre el kill y nada funciona....ejecute tu primera version  nada , la ultima y nada ...que no estoy viendo??? , antes de pensar en borrar el archivo funcionaba ok.

 

Share this post


Link to post
Share on other sites

Yo uso Excel 2007, pero eso no será, no se usa nada especial.Pues no lo sé de verdad, hice la prueba con tres archivos y me funcionó. No te queda mas que seguir el codigo paso a paso ver donde se genera realmente el problema.

Share this post


Link to post
Share on other sites

gracias por contestar , algo le paso a mi equipo , todo lo que me mandaste no responde con y sin cambios, pase anti-virus  y habian algunos procesos .vbs  molestando en algun lado...apenas resuelva algo te digo.

gracias

edit . Lo curioso que ahora no hace nada de nada , he ejecutado otros archivos excel con macros y funcionan bien , pero el tuyo ahora no hace nada ....curioso e indignante.

*(excel no tendra algun cache que se llene despues de ejecutar tanto una  rutina, o los nombres de las variables algunas entren en conflicto con el sistema )

* mi excel es de 32 bits ...solo es dato, he visto que rutinas de 64 bits no marchan en 32

*Probe todas la rutinas en m notebook de 64 bits , ninguna funciona ...nada (me refiero que no se queda pegada , no copia , etc, en todas lo unico que puedo hacer es seleccionar la carpeta padre.(jamas me habia pasado esto), este equipo tiene mas ram ..nada . No se me ocurren mas ideas

Share this post


Link to post
Share on other sites

Hola,

*(excel no tendra algun cache que se llene despues de ejecutar tanto una  rutina, o los nombres de las variables algunas entren en conflicto con el sistema ) .

Acabo de reprobar con tres archivitos, por si acaso nunca se sabe, y pirula perfecto:).

Ponle al despues del kill. DoEvents, por siacaso.. Doevents entrega el control a windows un instante
para que este haga tareas pendientes (events).

* mi excel es de 32 bits ...solo es dato, he visto que rutinas de 64 bits no marchan en 32

No, no marchan. Si el pc donde se instala office no va a actuar de servidor es tonteria instalar 64

*Probe todas la rutinas en m notebook de 64 bits , ninguna funciona ...nada (me refiero que no se queda pegada , no copia , etc, en todas lo unico que puedo hacer es seleccionar la carpeta padre.(jamas me habia pasado esto), este equipo tiene mas ram ..nada . No se me ocurren mas ideas

No creo que sea un problema de RAM.

 

Share this post


Link to post
Share on other sites

Para seleccionar una carpeta sin necesidad de seleccionar un archivo:

Private Sub SeleccionaCarpeta: On Error Resume Next
With Application.FileDialog(msoFileDialogFolderPicker)
    .Show
    Carpeta = .SelectedItems(1)
End With
End Sub

 

Share this post


Link to post
Share on other sites

hola Gracias Macro A. por tu codigo lo vere despues. .

Veamos he pasado horas frente al codigo

Descubri por que no funcionaba, antes de pasarle Excel , Pase todos los archivos a Mayusculas con otro programa , lo que no me daba cuenta que en la hoja de categoria estaba la primera con mayuscula y el resto con minuscula. Osea comparaba ALGEBRA con Algebra  y no funcionaba.(un error tonto , falto un aviso si no hay nada que comparar) los dejo todos con mayuscula-minuscula y funcioo a medias.

Hasta ahi feliz , pero algo pasa con el codigo

en una pasada "como que realizo todo bien" , copio , borro lo que tenia que borrar  y me decia  las carpetas donde se copiaba cada archivo, sorpresa las carpetas estaban vacias, descubri que crea las carpetas y que destino y origen son lo mismo, en otras copiaba bien 3 o 4 archivos y salia despues  Ruta inexistente

(no se como ocurrio esto). Hasta ahora sigo tratando , ver donde esta el error pero no lo veo

(al codigo no le he realizado ningun cambio) .Creo suponer , puedo estar en un error que la canridad de archivos a copiar sature alguna variable.

 

ideas ...

 

Share this post


Link to post
Share on other sites

Vamos a ver que guerra das :o....:lol:

Descubri por que no funcionaba, antes de pasarle Excel , Pase todos los archivos a Mayusculas con otro programa , lo que no me daba cuenta que en la hoja de categoria estaba la primera con mayuscula y el resto con minuscula. Osea comparaba ALGEBRA con Algebra  y no funcionaba.(un error tonto , falto un aviso si no hay nada que comparar) los dejo todos con mayuscula-minuscula y funcioo a medias.

cambia esto en el codigo y en la hoja categorias los pones todos en minusculas y a correr

If LCase(archivo.Name) Like "*" & NombreFile & "*" Then

en una pasada "como que realizo todo bien" , copio , borro lo que tenia que borrar  y me decia  las carpetas donde se copiaba cada archivo, sorpresa las carpetas estaban vacias, descubri que crea las carpetas y que destino y origen son lo mismo, en otras copiaba bien 3 o 4 archivos y salia despues  Ruta inexistente

(no se como ocurrio esto). Hasta ahora sigo tratando , ver donde esta el error pero no lo veo

(al codigo no le he realizado ningun cambio) .Creo suponer , puedo estar en un error que la canridad de archivos a copiar sature alguna variable.

Te lo tienes que currar, yo iria paso a paso unos cuantos archivos hasta que te de el fallo y ver cuando sucede lo que sucede... No queda otra a no ser que otro te de otra solución. He implementado lo que ha puesto MACROANTONIO que queda muy guay, te deja seleccionar solo la carpeta. he vuelto a probar con 7 archivos y me a funcionado de gloria:)

 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  



×
×
  • Create New...

Important Information

Privacy Policy