lunes, 2 de marzo de 2020

MACRO EN VBA PARA EXCEL - SUMA TODAS LAS CELDAS DE DIFERENTES ARCHIVOS CON EL MISMO FORMATO

SUMA LA MISMA CELDA EN DIFERENTES ARCHIVOS DE EXCEL Y EL RESULTADO LO LOCALIZA EN LA MISMA CELDA DEL ARCHIVO EN EL QUE SE EJECUTE EL MACRO, TODOS LOS ARCHIVOS A SUMAR DEBEN ESTAR EN LA MISMA CARPETA

Sub nombredelmacro()

'--- VARIABLES ---
    '--- hoja es el número de la pestaña en excell
    hoja = 12

    '--- a es un contador
    a = 0

    '--- letras es el arreglo de la posición de la columna en excel
    Dim letras
    letras = Array("k", "l", "n", "o", "q", "r", "t", "u", "w", "x", "z", "aa", "ac", "ad")

     '--- logletr es el numero de columnas del array letras menos uno por que empieza en cero
    logletr = 13

    '--- li y ls rango de renglones
    li = 370
    ls = 389

    '--- pasos es el Step del for
    pasos = 1
    Dim valores(280) As Integer
   
   
'----
   
    primero = ActiveWorkbook.Name
    Sheets(hoja).Select
'--- NOMBRE DE CARPETA DONDE SE DEBEN GUARDAR TODOS LOS ARCHIVOS
    ChDir "C:\directorio\"
    archi = Dir("*.xl*")
    Do While archi <> primero
        a = 0
        Workbooks.Open archi
        For c = li To ls Step pasos
            For posletra = 0 To logletr
                celda = letras(posletra) + CStr(c)
                If IsNumeric(Sheets(hoja).Range(celda).Value) Then
                    valores(a) = valores(a) + Sheets(hoja).Range(celda).Value
                Else
                    valores(a) = valores(a) + 0
                End If
                a = a + 1
            Next
        Next
       
        ActiveWorkbook.Close False
        archi = Dir()
    Loop
   
    a = 0
   
    For x = li To ls Step pasos
        For posletra = 0 To logletr
            celda = letras(posletra) + CStr(x)
            Range(celda).Select
            ActiveCell.Value = valores(a)
           
            a = a + 1
        Next
    Next
End Sub

No hay comentarios:

Publicar un comentario