Excel - Barrido de archivos y función suma

   
Vista:

Barrido de archivos y función suma

Publicado por Carlos Armas (2 intervenciones) el 28/11/2009 13:16:40
Hola a todos. He caído por aquí en busca de ayuda para una archivo de Excel que necesito.

No tengo ni idea de VBA pero creo que necesitaré código para lo que quiero hacer.

Veréis, tengo una carpeta con una serie de archivos de Excel, todos los archivos tienen un formato de nombre muy parecido, van desde 001.xlsx a (por ejemplo) 045.xlsx

El caso es que cada X tiempo voy añadiendo archivos a esa carpeta, siempre con el mismo formato de nombre, dentro de esos archivos, en una hoja con el mismo nombre y en la misma celda hay una cantidad.

Lo que me gustaría saber es cómo puedo hacer un archivo, que teniendo un botón con una macro asociada, dicha macro haga un barrido de archivos por ejemplo de 001 a 100 buscando cantidades en esas celdas, y luego me las sume todas, aunque no haya 100 archivos sino que empiecen en 037.xlsx y acaben en 062.xlsx (por ejemplo)

Si alguien pudiese ayudarme le estaría muy agradecido. Y aunque no, gracias desde ya :)

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

SolucionBarridoDeArchivosConFunciónSuma

Publicado por Adriano Torres (28 intervenciones) el 12/12/2009 02:46:08
QUE HAY CARLOS :

Aqui te dejo una macro que diseñe para resolver tu problema, primero te explico algunas cosas:

- Hice 5 archivos de Excel los cuales los llamé 1.xls, 2.xls, 3.xls, 4.xls y 5.xls
- En cada libro coloqué una cantidad en la celda A1 de la primera hoja: 123, 56.23, 23.98, 69.78 y 89.65 respectivamente, en todos la primera hoja se llama igual "Hoja1", no importa si el nombre es diferente siempre y cuando sea siempre en la número 1.
- Hice un archivo que llamé BarrerArchivos.xls que es donde se almacena la macro, en la Hoja1 coloqué lo siguiente:
* En la celda A2 el texto "Inicial" y en B2 el número (nombre) del libro inicial a leer pudiendo ser desde el número 1 o el que tu decidas.
* En la celda A3 el texto "Final" y en B3 el número (nombre) del libro final a leer.
* En la celda A5 el texto "Suma"
- Abrir el editor de visual basic (Oprime ALT+F11)
- Insertar un módulo y pegar el siguiente código :

Sub SumCellFiles()
wbkINI = Range("B2").Value
wbkFIN = Range("B3").Value
ruta = Range("B4").Value
For i = wbkINI To wbkFIN - 1
Workbooks.Open ruta & "/" & i & ".xls"
Workbooks(i & ".xls").Activate
suma = suma + ActiveWorkbook.Worksheets(1).Range("A1").Value
ActiveWorkbook.Close
Next i
With Range("B5")
.Value = suma
.NumberFormat = "#,##0.00"
End With
MsgBox "La suma es :" & Format(suma, "#,##0.00")
End Sub

- Inserté un rectángulo en la celda D2 del tamaño de la misma, luego dar click sobre él con botón derecho y seleccionar "Asignar macro", en el cuadro aparecerá las macros disponibles; seleccionar "Sub SumCellFiles"
- Listo, ahora con solo dar click en este cuadro calculará la suma de todas las cantidades en la celda A1 de lo Hoja1 del libro inicial al libro final.

SI TE SIRVIO COMENTA QUE ESTO ES TIEMPO Y SIRVE DE MUCHO SABER QUE A ALGUIEN PUDISTE AYUDAR.

CUALQUIER COSA

ADRIANO TORRES
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SolucionBarridoDeArchivosConFunciónSuma

Publicado por Adriano Torres (28 intervenciones) el 12/12/2009 02:56:04
Encontré un pequeño bug, en la línea del ciclo For quita el -1 que aparece al final y listo.

ADRIANO TORRES
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SolucionBarridoDeArchivosConFunciónSuma

Publicado por Carlos Armas (2 intervenciones) el 12/12/2009 04:16:46
Hola Adriano.

Antes de nada, un millón de gracias por tu ayuda, te lo agradezco sinceramente. El código funciona a la perfección, solo haré un par de apuntes por si alguien que necesite algo parecido se encuentra con este post, para hacérselo más fácil aún.

Como uso la versión 2007, tuve que cambiar

Workbooks.Open ruta & "/" & i & ".xls"
Workbooks(i & ".xls").Activate

por

Workbooks.Open ruta & "/" & i & ".xlsx"
Workbooks(i & ".xlsx").Activate

(una chorrada vamos)

Por otro lado, en el archivo de barrido, en la celda A4 hay que escribir la ruta en la que están los archivos que tiene que barrer, por ejemplo

C:\Documents and Settings\Usuario\Escritorio\Archivos de Excel\

Para que la macro pueda encontrar los archivos que tiene que barrer.

Poniendo eso va como una flecha la macro :) Lo único malo es que no funciona cuando hay saltos en los archivos, por ejemplo si en una carpeta tengo el 01, 02, 03, 07, 08, etc. Me salta un error diciendo que no encuentra el archivo 04, pero vamos, cambiando los valores y ejecutándola un par de veces va perfecta.

Muchísimas gracias de nuevo, te lo agradezco mucho, un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

TienesRazónCarlosArmas

Publicado por Adriano Torres (28 intervenciones) el 12/12/2009 17:45:29
QUE BIEN QUE TE SIRVIÓ, Y LAS ACLARACIONES QUE HICISTE SON MUY BUENAS, A MI SE ME PASÓ DECIR QUE EN LA CELDA A4 HABIA QUE PONER EL TEXTO "RUTA" Y EN LA CELDA B4 LA RUTA PARA ENCONTRAR LOS ARCHIVOS A BARRER.

CUALQUIER DUDA SIGUE COMENTANDO ...

ADRIANO TORRES
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar