Pregunta para Luis Mondelo! Insertar ruta en una macro para que me copie archivos txt

Hola Luis! Te escribo referente a la macro que me ayudastes a programar hace unos días la cual se encargaba de abrir unos ficheros .txt y los copiaba en una hoja excel uno a continuación y el usuario inicialmente tenia que introducir el mes al que correspondía el archivo.

Para ejecutar la macro tenia que poner los archivos que quería copiar en una carpeta independiente y dentro de ella meter el archivo con la macro, realizando esto funcionaba correctamente. Me gustaría con el fin de automatizar mas el procesos, que en vez de tener que meter todos esos archivos en la carpeta se pudiera insertar la ruta de ubicación original de los mismos y que me los fuera copiando...lo he intentando con DirectoryName y Name del objeto y FileInfo pero no me cuadra nada....

La ruta por ejemplo donde estarían los txt relacionados a cada caso sería por ejemplo C:\ carpeta nº1\ carpeta nº2\ncarpetas(cada carpeta se refiere a una instalación determinada). Dentro de cada una de estas ncarpetas hay otras que se corresponden a los datos de cada uno de los meses del año.

En el interior de cada una estas carpetas mensuales hay varios ficheros con formato. Txt y a mi me interesa copiar unicamente uno de ellos, que es el nombre del archivo que te pase hace unos días con formato: XXXX(1311)-NOMBRE INSTALACION-XXXXX. Lo que me refiero es que al introducir la ruta me busque exactamente el archivo que yo quiero de un mes determinado (por ejemplo enero) y de una instalación llemémosla "X1" y que luego me copie el mismo archivo de la instalación "X2" a continuación de lo y esto poderlo actualizar mesa a mes. La tarea es similar a la que ya estuvimos hablando con la diferencia de que me vay buscando en las carpetas....

Si necesitas que te pase algún dato mas coméntamelo.

Agradecerte el tiempo que dedicas a ayudar a la gente de esta comunidad.

1 respuesta

Respuesta
1

Mándame una pequeña estructura de carpetas con un ejemplo para ubicarme un poco mejor

[email protected]

De acuerdo Luis, te mando a tu correo una estructura de las carpetas y vamos hablando.

Gracias.

En el siguiente enlace tienes tu archivo con mi solución

http://share.cx.com/JZFpbW

No olvides finalizar la consulta

Hola Luis, tengo varias dudas respecto a la macro.

En la pestaña de menú donde se indica el MES,yo por ejemplo introduzco el mes de diciembre, y en la carpeta del parque donde tengo las carpetas correspondientes a cada mes del año...yo por ejemplo ejecuto la macro y se me copian los txt de cada mes, pero en la columna del mes se me copia para todos los meses el mes introducido al inicio, ¿se podría modificar de forma que cada archivo copiado tenga el mes correspondiente a sus datos?

Por otro lado, se podría suprimir los 4 primeros números que aparecen en el nombre del parque? ya que al agrupar los datos en una tabla dinámica me los tomaría como parques diferentes....Actualmente el nombre se copia de la forma XXXX-Parque...

Te mando a tu email las pruebas que estoy realizando para que lo veas como queda.

Vamos hablando.

Gracias

En el siguiente enlace te dejo subido el nuevo archivo que sustituye al anterior

http://share.cx.com/YrskPq

Hola Luis;

El nombre del parque aparece correctamente.

Respecto a los meses de los archivos, como puedo incluir el mes correspondiente a cada archivo importado?es decir el archivo txt de diciembre que me aparezca en la columna "diciembre", el archivo txt de enero que me aparezca en la columna "enero" como puedo hacerlo, que se me abra una ventana cada vez que importe un txt y yo teclee el mes?

Gracias.

y.. ¿de dónde saco el mes? ¿De dónde lo puedo sacar?

Para sacar el mes con cada archivo me imagino que el formato del nombre del archivo tendría que ser ejemplo MES-PARQUE-.....es decir por ejemplo ENERO-ALMAREN-Internal....no? pero claro el nombre es el que es...

Se podría en su caso extraer los 4 primeros números del nombre del archivo que se refieren al año y mes y colocarlos en una columna independiente llamada mes? y que se copien ahi?

Ok, en el siguiente enlace lo tienes terminado

http://share.cx.com/mHfZPM

No olvides finalizar la consulta

Buenas tarde Luis;

Perdona que sea tan pesado con las preguntas...

Tengo una duda referente a los meses de año y no se si podría hacer...He estado revisando la función MonthName para poder determinar el nombre del mes, a partir de los números enteros asignados a los meses que se obtienen a partir del nombre del fichero, pero no estoy seguro si podría por ejemplo con la siguiente expresión;....He estado haciendo alguna prueba pero no funciona....

Dim mes_alarma As Integer
Dim nombre_mes As String
mes_alarma = mes
nombre_mes = MonthName(mes_alarma, True)

Por otro lado, tengo otra duda referente a la selección de las carpetas. En el ejemplo que te pase había una carpeta que se llamaba Análisis de Funcionamiento y dentro de ella había varias carpetas con algunos nombres de algunos parques (en realidad son setenta). Con la macro actual copiamos todos los datos de las carpetas que hay pero si por ejemplo se quisiese copiar de una vez (al introducir la ruta (C:\Users\Desktop\EMPRESA\EFICIENCIA_OPERATIVA\WIND_EMPRESA\ANÁLISIS DE FUNCIONAMIENTO\(Sin introducir el nombre del parque) unicamente una serie de parques, y por ejemplo en una pestaña de excel introduzco los nombres de los parques que yo quiero agregar....¿Se puede asignar a la ruta que introduzco inicialmente la referencia de pestaña de excel donde están los nombres de los parques que quiero copiar y me copie de una vez solamente esos?

Te mando al email el fichero de excel.

Gracias.

Pero... en el último archivo que te mandé ya lo dejé programado para poner el mes y el año en la última columna del informe

¿no es así?

Si ,se obtenía el mes de forma numérica, es decir, en la columna mes aparecía 1, 2,...que lo obteníamos del nombre del archivo, pero he estado revisando la función que te comento antes, que al parecer realiza el cambio de mes con numero a mes con letra (MonthName), crees que se podría aplicar?

Respecto a lo del tema de copiar a la vez una serie de parques, que puedan tener la misma tecnología, y yo tenga esos nombres guardados en una pestaña del libro, crees que se podría asociar esa búsqueda? de forma que pueda copiar de una vez los parques guardados en las pestaña llamada "parques"?

Es decir si yo tengo en la carpeta "Análisis de Funcionamiento" todos los parques y yo por ejemplo tenga varios ficheros llamados IMPORTAR_NUEVO_TECNOLOGIA_A (y yo copie los txt de esa tecnología según los parques que tengan esa tecnología...)otro que se llame IMPORTAR_NUEVO_TECNOLOGÍA_B , etc.....no se logro explicarme correctamente...

Respecto a lo de copiar varios parques a la vez, en vez de ir cambiando el nombre del parque al final de la ruta, quiero decir que por ejemplo me busque en una pestaña llamada por ejemplo "parques" donde tengo guardado el nombre de los parques y que me vaya cogiendo esos nombres directamente...

Respecto al código tengo duda en la siguiente linea: If UCase(Right(fichero, 10)) = "PERIOD.TXT" Then , exactamente que función tiene? period.txt hace función de una variable donde guardo los txt copiados?

Hola Luis;

Ademas de las dudas anteriores, me aparece el siguiente error unicamente al importar solo algunos archivos: "error 1004 en tiempo de ejecución.No se encontró "C:\........ Compruebe la ortografía del nombre del archivo y si su ubicación es la correcta." He revisado los nombres de archivos y son correctos... Si no encontrara la ruta me aparecería el error 76.....pero no me aparece este...No se cual puede ser el problema...

Muchas Gracias.

Disculpa por la demora pero estoy bastante ocupado últimamente...

La frase:

If UCase(Right(fichero, 10)) = "PERIOD.TXT" Then

Significa que únicamente nos centramos en el fichero que acaba con esas letras, solo en ese

En cuanto al otro tema, ¿ahora quieres que todos los txt estén dentro de una misma carpeta?

Así era como estaba al principio, eso cambio de nuevo la macro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas