• 👏 Bienvenido a nuestra comunidad Excel

    ¿Todavía no estás registrado? 😲

    Registrate gratis aquí y podrás:

    💪 Hacer preguntas a los expertos
    ⬇️ Descargar ejemplos y plantillas
    🏅 
    Acceder a contenidos premium

Crear carpetas

Akkar

Member
No he conseguido arreglarlo

ejecuto y en valoraciones se queda igual, y en curaciones mueve 45 archivos
crea las carpetas bien, pero no mueve los archivos
:(

añado

las carpetas, ahora salen solo con el nombre. Esta bien?
 

Héctor Miguel

Well-known member
ejecuto y en valoraciones se queda igual, y en curaciones mueve 45 archivos
crea las carpetas bien, pero no mueve los archivos
si en una carpeta ("curaciones") SI mueve "x" archivos
y en otra carpeta ("valoraciones") NO mueve "nada" ?

lo obvio es pensar que el nombre de dicha carpeta es (en algo) diferente
=> entre la referencia en el codigo (las constantes) y el nombre "real" en el sistema (de archivos)
- un espacio (de mas o de menos, al final, al principio, ...)
- un caracter diferente (puntos, tildes, ...)

o... que en la carpeta de donde no se "movieron" archivos...
- ninguno coincide con el CCxxxxx de la "tablaPacientes" (?)

insisto: en varias pruebas no hubo falla (claro, en "mi" sistema de archivos)
 

Akkar

Member
Las carpetas, las copie y pegue de tu macro, y nada.

no te voy a decir, que no me haya equivocado en algún archivo, pero en 220 no creo
puede ser por no estar en la carpeta CCxxxxx?

quedé desanimado :(
 

Akkar

Member
Es posible que sea por esto?
On Error GoTo siguiente

que le falta tmp?

probe y no es eso, el anterior modelo lo llevaba, aunque era otra funcion,
 
Última edición:

Akkar

Member
lo obvio es pensar que el nombre de dicha carpeta es (en algo) diferente
=> entre la referencia en el codigo (las constantes) y el nombre "real" en el sistema (de archivos)
- un espacio (de mas o de menos, al final, al principio, ...)
- un caracter diferente (puntos, tildes, ...)

o... que en la carpeta de donde no se "movieron" archivos...
- ninguno coincide con el CCxxxxx de la "tablaPacientes" (?)

insisto: en varias pruebas no hubo falla (claro, en "mi" sistema de archivos)
no encontré caracteres diferentes.

Coindiden los CCxxxxx
 

Héctor Miguel

Well-known member
Si puedes mandame los nombres como probaste, yo ya no se que mas hacer
1) los nombres de las carpetas que administra el procedimiento estan declaradas y asignadas en las variables "Const ..." al inicio del modulo (transcribo):
Código:
Const tipo As String = ".pdf" ' <= el tipo de archivos que se van a organizar OJO: NO lleva "*" al inicio '
Const base As String = "\Curaciones Agosto20" ' <= OJO: NO lleva "\" al final '
Const curaciones As String = "\curaciones para organizar agosto20\" ' <= OJO: lleva "\" al final '
Const valoraciones As String = "\valoraciones agosto20\" ' <= OJO: lleva "\" al final '

=> los anteriores son los nombres QUE DEBES comprobar (o corregir) si en tus pruebas reales son diferentes (?)
=> OJO con cuales se asignan con o sin el ultimo separador de ruta ( \ ) y que esta en los comentarios

2) para la funcion de vba Dir(... no importa si (may/min)usculas

3) la capitalizacion de cadenas de texto SI es diferenciada (p.ej.) al crear los objetos/carpetas/...
- por ello es en que la constante "base" SI pongo en mayusculas la primer letra de la carpeta A CREAR
 

Akkar

Member
bueno bueno bueno

hice por deseperacion, una lista nueva con nombres ficticios
directamente desde la tabla que pusiste en la hoja, en vez de mis datos
3 auxilares inventados
7 pacientes inventas
por si tenia que enseñar
47 archivos mezclados con cada cosa que dijimos
va perfecto

cago en to lo que se menea.... donde estara el fallo de la otra lista o será porque hay muchisimos datos?
 

Akkar

Member
bueno ahora me toca hacer todo desde 0, me explico, con tantas pruebas, quiza los listados se mezclaro o yo que se.
pero importare una lista nueva, a ver si funciona esta vez, porque esta claro que el fallo no esta en la macro,
entonces debe estar en los datos que copie, bueno hago la prueba a ver y te cuento

Esto muy agradecido, por tu paciencia y saber estar.
un abrazo crack
 

Akkar

Member
Vale, ya encontré el problema, me descanso el cuerpo :)

No se si es del tintero o no, creo que no

Como no encontraba el problema, mire los archivos que estuvieran iguales, los espacios.... los nombres de la carpeta
vamos todos los consejos que me dijiste.
Cree una base de datos inventada..... y a la primera funciono como te dije,
al final, no podía estar sin ver cual era el problema, así que por lógica, fui a la tabla, y repasando de uno en uno,
al igual que hace la macro, pues los primeros estaban en sus carpetas, pero el décimo o por ahí, no tenia archivos
ni en valoraciones ni en curaciones, pero los siguientes si habían movido archivos, pero llegó un segundo sin
archivos en ambos lados, así que decidí borrar esas lineas y probar de nuevo, y si me movió 30 archivos mas.
Te lo quise decir en ese momento, pero quise probarlo en la base de datos inventados. No fuera paranoia mia.
Probé colocando otro paciente pero sin que tuviera archivos, y me funciono correcto. Asi que volví a crear varios
pacientes nuevos, con archivos y otro sin archivos, y salió el mismo error.

Esa es la pauta, y yo imagino, que el primer vacio lo pasa, pero el segundo ya no.

Tiene solución eso?
Espero que me haya explicado bien.

un gran abrazo!
 

Héctor Miguel

Well-known member
Pudiste echarle un ojo?
lo que esperaba es que hubiera pacientes en la tabla con errores en el nombre (p.ej. por espacios)
NO que hubiera pacientes SIN archivos a mover en las carpetas a reorganizar (el "onerror" funciona diferente)

en el segundo procedimiento, cambia estas lineas:
Código:
      origen = carpeta & "*" & codigo & tipo ' el CCxxxx a buscar en la carpeta indicada '
      destino = ruta & auxiliar & "\" & paciente & "\" ' la carpeta (auxiliar > paciente) a donde moverlos '
      On Error GoTo siguiente ' por si en la carpeta no existen archivos del paciente (CCxxxx) '
      fso.MoveFile origen, destino ' se mueven todos los archivos CCxxxx (del paciente en turno) '
siguiente:

por estas otras:
Código:
      origen = carpeta & "*" & codigo & tipo ' el CCxxxx a buscar en la carpeta indicada '
      If Dir(origen) = "" Then GoTo siguiente ' por si en la carpeta no existen archivos del paciente (CCxxxx) '
      destino = ruta & auxiliar & "\" & paciente & "\" ' la carpeta (auxiliar > paciente) a donde moverlos '
      fso.MoveFile origen, destino ' se mueven todos los archivos CCxxxx (del paciente en turno) '
siguiente:

toma en cuenta que...
- pacientes SIN archivos, se queda su carpeta creada (pero vacia)
- archivos de pacientes EN el listado, se mueven todos sus archivos a "su carpeta" (auxiliar\paciente)
- archivos NO movidos, tampoco hay el paciente en la lista
 

Akkar

Member
Perfecto.... Y hace exactamete eso, pacientes sin archivos, vacia, archivos no movidos, porque no tienen carpeta


Muchas gracias fenomeno.

un abrazo!
 

Akkar

Member
He hecho varias pruebas y va a la perfección!
Muchas gracias por todo. He aprendido algunas cosillas, la programación es complicada al principio, sobre todo, porque no
hay un solo camino para llegar a la meta. Y eso me confunde mucho.
No cierro este Tema, porque si no es molestia , sigo destripando las tripas de la macro, y seguire consultando, cositas, dudas....

Me disculpas todo lo malo, y de nuevo muchas gracias por tu tiempo y experiencia.
un abrazo
 

Akkar

Member
Hola, he estado sin internet estos días

Como puedo traer limpias las celdas de un libro a otro?

me las trae con relleno y bordes, incluso letras de colores(igual que en origen), me gustaría traer solo el texto

Código:
wsHojaOrigen.Range("R" & cont).Copy Destination:=wsHojaDestino.Cells(ultFilaDestino, 7)
        wsHojaDestino.Cells(ultFilaDestino, 7).Interior.ColorIndex = 0


lo único que conseguí así es quitar el color de la letra, y luego hacer una macro para limpiar lo traído, pero tiene que haber algo más fácil

gracias
 
Arriba