Macros en excel

Hola Cmera
ME llamo Ricardo Bolaños y estoy ubicado en Cali, Colombia.
Te agradecería si me puedes ayudar con una macro repetitiva que estoy desarrollando y no he podido definir las instrucciones correctas para lograr el objetivo.
Te anexo copia de lo que estoy haciendo aspirando a encontrar una luz en el camino.
Atentamente
Ricardo bolaños
' Macro1 Macro
' Macro grabada el 26/03/2003 por Ricardo A. Bolaños
'La macro tiene como propósito repetir un número de veces determinado la operación de abrir los archivos de trabajo correspodiente a las proyecciones de los clientes del negocio. Se requiere dejar por fuera del texto de la macro esta instrucción porque los clientes son variables que pueden entrar o salir de un periodo a otro.
El número de veces a repetir la operación lo determina la celda denominada como "NClientes" Cada cliente tiene un carpeta de trabajo dentro de la carpeta de SLI S.A.
El Proceso de la macro es ir a la celda denoinada "RUTA" y empezar el contador en 0, seguidamente debe comparar si el contador es igual a "NClientes", si es así debe finalizar la macro; de lo contrario debe proceder a ejecutar la operación repetitiva consistente en los siguientes pasos:
1) Bajar el cursor una celda y abrir el archivo de excel definido en la celda donde está el cursor.
'2) Agregar un 1 al contador y repetir la operación.
' Acceso directo: CTRL+a
'
Application.Goto Reference:="RUTA"
contador = 0
Do Until Selection.Offset(contador, 0) = NClientes
If Selection.Offset(contador, 0).Value > NClientes Then
With Selection.Offset(contador, 0)
Range.Row.down = 1
ChDir "C:\Ricardo Documentos\Contratos\SLI S.A"
Workbooks.Open Filename:=ActiveSheet
End With
End If
contador = contador + 1
Loop
Application.Goto Reference:="NCLIENTES"
End Sub
'Para correr la macro necesito definir dos instrucciónes:
'1) baja una celda. (al parecer la instrucción rowDown=1) no funciona
'2) Tomar el texto de la celda donde está el cursor e incorporar el texto como ruta del archivo que debe abrir.

2 respuestas

Respuesta
1
Que tal Ricardo como va... veo que bien, antes que nada te quiero pedir el favor de no molestarte pues utilicé muy poco lo que me enviaste no porque no sirviera sino porque cada uno tiene su "set" de comandos preferidos y yo utilizo unos diferentes de los que tu usas...
Bueno yo hice una macrito que espero que te funcione pruébala y me cuentas, acá va el texto:
Sub Abrir_Archivos()
' Macro grabada el 02/04/2003 por CMERA
ruta = Range("RUTA").Value
ruta = "C:\Ricardo Documentos\Contratos\SLI S.A\" & ruta
ChDir ruta
Range("RUTA").Offset(1, 0).Select
contador = 1
libro = ActiveWorkbook.Name
Do While contador <= Range("NClientes").Value
Workbooks.Open Filename:=ActiveCell.Value
Application.Workbooks(libro).Activate
ActiveCell.Offset(1, 0).Select
contador = contador + 1
Loop
End Sub
La macro asume que en la celda denominada RUTA tienes el nombre de la carpeta del cliente (solita sin nada más pues me dices que todas las carpetas están dentro de la que mencionas en tu pregunta)
La probé y creo que te funcionará muy bien... en todo caso te resuelvo las 2 dudas que me planteas al final de la pregunta por si decides mejorar tu código y no utilizar el mío.
Para bajar una celda respecto de la que se encuentra activa utiliza
ActiveCell.Offset(1,0).Select
Y para cambiar el directorio lo puedes hacer concatenando la ruta como lo hice en mi código o teniendo en la celda que llamas RUTA la ruta completa... por ejemplo
C:\Ricardo Documentos\Contratos\SLI S.A\CARVAJAL
y utilizarías
ChDir Range("RUTA").Value
Espero que sea lo que necesitas y que te sirva, si me quedó algo mal o no entendiste no dudes en preguntar, si de lo contrario la respuesta te satisface te agradeceré una calificación acorde con la calidad y oportunidad de la misma.
Cesar, Te agradezco la oportunidad de la respuesta, en verdad me das bastante luz con tu código. Es posible que tenga que hacer unos cambios en tu macro, pero en primera instancia me resuelve la inquietud.
Respuesta
1
Para ver qué hace, pero las respuestas concretas son:
1) Para bajar una celda usa ACTIVECELL. OFFSET(1,0). SELECT
2) para tomar el valor de la celda como el nombre del archivo a abrir, haz una asignación NOMBRE=ACTIVECELL.VALUE
3) para abrir un archivo con esta ruta usa WORKBOOKS.OPEN FILENAME:=NOMBRE
4) Si quieres que abra el archivo asignado a NOMBRE que está en la ruta que fijaste en RUTA, puedes omitir la instrucción de CHDIR"..." y sólo poner WORKBOOKS. OPEN FILENAME:=RUTA & NOMBRE
(a lo mejor necesitas WORKBOOKS.OPEN FILENAME:=RUTA &"\"& NOMBRE)
5) Finalmente, las primeras 2 instrucciones que te di las puedes escribir en un paso: NOMBRE=ACTIVECELL.OFFSET(1,0).VALUE
por lo que tu macro puede resumirse a:
Sub macro()
Application.Goto Reference:="RUTA"
RUTA = ActiveCell.Value
For CONTADOR = 1 To NClientes
NOMBRE = ActiveCell.Offset(CONTADOR, 0).Value
Workbooks.Open Filename:=RUTA & "\" & NOMBRE
Next CONTADOR
End Sub
Estimado Gualo, Cordial saludo.
Recibí tu respuesta y te agradezco la oportunidad de la información y el valor de la misma. La macro no me corrió del todo, ejecuta bien la instrucción de repetir pero no corre la condición de abrir los archivos. Sin embargo me es de mucha utilidad porque tengo las instrucciones que le hacen falta para terminarla; verdaderamente me diste una luz para continuar con mi trabajo.

Añade tu respuesta

Haz clic para o