Distinguir carpetas mensuales del explorador. Macro

Me gustaría preguntaros una cosa:
Tengo un libro1.xls con una serie de valores y una macro.
Al ejecutar-la, esos valores se me copian a otro libro, el cual llamaré "NOMBRE_MES.xls".
Existen 12 libros "NOMBRE_MES.xls", uno para cada mes del año.
En el explorador de windows, he clasificado los años y los meses de esta manera:
- Carpetas de años: 2008, 2009, 2010, etc.
- Dentro de cada carpeta anual, las subcarpetas del mes correspondiente: 01 Enero, 02 Febrero, 03 Marzo, 04 Abril, etc.
Dentro de estas subcarpetas mensuales se ubica el libro "NOMBRE_MES.xls" con el nombre correspondiente de cada mes, es decir, enero.xls, febrero.xls, marzo.xls, abril.xls, etc.
La macro del libro1 no distingue el mes en el que estamos y ahora mismo la he programado para abra una dirección concreta, en este caso, al archivo julio.xls, contenido en la carpeta 2009, para realice la copia de los valores contenidos en el libro1.xls.
El libro1.xls siempre será el mismo.
El problema es cuando cambiemos de mes y de año.
No sé cómo hacer para que la macro detecte el mes y el año, y copie los valores en la carpeta y subcarpeta correspondiente.
¿Sabrías cómo hacerlo?

1 respuesta

Respuesta
1
¿Podrías mostrar el código que utilizas para hacer eso? Sería de gran ayuda para poder comprender cómo lo haces y dónde podríamos establecer el cambio que necesitas. Espero respuesta.
NOTA: Por favor, sólo pega el código que usas para hacer la generación y el guardado del libro para ser más concreto en lo que necesitas.
Saludos desde México, Juan Pablo E.P.
El código es sencillo, lo que tendría que hacer es abrir el archivo correspondiente al mes actual, y copiar unos valores, cerrar y guardar. Para abrir un archivo en concreto sería así:
Workbooks.Open Filename:= _
        "C:\nueva carpeta\ra\2009\07 julio\ra JULIO_2009.xls"
'en esta linia se copiaran unos valores y no he creído necesario poner la programacion, y luego:
ActiveWorkbook.Save
    DisplayAlerts = False
    ActiveWorkbook.Close
Ya esta, sólo es eso. El problema es que el excel tiene que distinguir la carpeta del año, 2009, 2010, etc, y dentro de esta carpeta el mes correspondiente, y dentro de cada mes correspondiente el archivo "ra NOMBRE_MES_AÑO.xls"
de la siguiente manera:
"C:\nueva carpeta\ra\2009\08 agosto\ra agosto_2009.xls"  
"C:\nueva carpeta\ra\2009\09 septiembre\ra septiembre_2009.xls"
y cuando cambie de año, la dirección sera de esta forma
"C:\nueva carpeta\ra\2010\02 julio\ra FEBRERO_2010.xls"
Muchas gracias por tu ayuda
Lo siento, he visto que el slash vertical no aparece. Aquí te lo vuelvo a dejar :
-------------------------------------------------------------------------------------------------------------
Te pongo el código, que es sencillo, lo que tendría que hacer es abrir el archivo correspondiente al mes actual, y copiar unos valores, cerrar y guardar.
Para abrir un archivo en concreto sería así:
Workbooks.Open Filename:= _ 
"C: / nueva carpeta / datos / 2009 / 07 julio / datos JULIO_2009.xls" 
'en esta linia se copiaran unos valores y no he creído necesario poner la programacion, y luego: 
ActiveWorkbook.Save 
DisplayAlerts = False 
ActiveWorkbook.Close 
Ya esta, sólo es eso. El problema es que el excel tiene que distinguir la carpeta del año, 2009, 2010, etc, y dentro de esta carpeta, distinguir el mes correspondiente, y dentro de cada mes correspondiente abrir el archivo "datos NOMBREMES_AÑO.xls"
de la siguiente manera:
"C: / nueva carpeta / datos / 2009 /08 agosto / datos agosto_2009.xls" 
"C: / nueva carpeta / datos / 2009 / 09 septiembre / datos septiembre_2009.xls" 
y cuando cambie de año, la dirección sera de esta forma 
"C: / nueva carpeta / datos / 2010 / 02 febrero / datos FEBRERO_2010.xls" 
Muchas gracias por tu ayuda
<div><span style="font-family: Arial; font-size: small;">[size= 13px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px]
[/size]</span></div>
Creo que ya entendí, necesitas que al ejecutar la macro que tienes en el LIBRO1, automáticamente se abra en libro del año y mes actual, copiar algunos datos al libro recién abierto [o al LIBRO1, eso es lo de menos] y finalmente guardar cambios y cerrar, si estoy en lo correcto podrías utilizar las funciones MONTH, MONTHNAME y YEAR para obtener el nombre delmes y el año actuales.
A continuación te ejemplifico:
Si escribes esto en una macro
   MsgBox MonthName(Month(Date)) & " " & Year(Date)
se enviaría un mensaje en pantalla con el texto "Julio 2009" [sin comillas], este otro
     MsgBox Month(Date)
enviaría "7" [sin comillas]
Entonces, ya con esto sabes obtener el nombre del mes y el año, pudiéndolo utilizar de la siguiente manera en tu proyecto:
Dim mes As String, nombreMes As String, año As String
    mes = Month(Date)
    If mes < 10 Then
        'si es julio, mes = 07
        mes = "0" & mes
    End If
    nombreMes = MonthName(mes)
    año = Year(Date)
Workbooks.Open Filename:= _
        "C:\nueva carpeta\ra\"& año &"\"& mes &" "& nombreMes &"\datos "& nombreMes &"_"& año &".xls"
Espero sea lo que necesitas, si requieres de alguna explicación extra sobre las funciones o algún otro dato del ejemplo que te proporciono no dudes en consultarme nuevamente.
Saludos desde México, Juan Pablo E.P.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas