Problemas con codigo VBA
Publicado por Nahara (1 intervención) el 24/06/2020 16:50:32
Hola grupo, estoy trabada en una formula VBA para Excel, usando macros....mi situacion es la siguiente:
Necesito vincular varios documentos recogidos en forma de encuestas, hacia otro documento general, en forma de matriz, este libro recogeria todos los datos a modo de resumen de las respuestas de cada encuestado. He modificado una formula que tome cmo ejemplo que me salta constantemente un error...me podrian ayudar?
He modificado un tanto tu codigo, para acercarlo a lo que necesito. Primero que todo, deseo agradecer la ayuda que me brindas con tu codigo, y lo referenciaré en cada uso que le de, cuenta con ello. Mi situacion es la siguiente, intento validar una encuesta, en el que asigno valores a cada respuesta introducida por el usuario y que esto tribute a su vez a una matriz de datos que puedo finalmente manerjar estadisticamente. Modifique tu codigo segun mis condiciones, pero me sigue saltando error: que estan incorrectos los parametros de Matriz...me ayudas???----te agradeceria mucho
Necesito vincular varios documentos recogidos en forma de encuestas, hacia otro documento general, en forma de matriz, este libro recogeria todos los datos a modo de resumen de las respuestas de cada encuestado. He modificado una formula que tome cmo ejemplo que me salta constantemente un error...me podrian ayudar?
He modificado un tanto tu codigo, para acercarlo a lo que necesito. Primero que todo, deseo agradecer la ayuda que me brindas con tu codigo, y lo referenciaré en cada uso que le de, cuenta con ello. Mi situacion es la siguiente, intento validar una encuesta, en el que asigno valores a cada respuesta introducida por el usuario y que esto tribute a su vez a una matriz de datos que puedo finalmente manerjar estadisticamente. Modifique tu codigo segun mis condiciones, pero me sigue saltando error: que estan incorrectos los parametros de Matriz...me ayudas???----te agradeceria mucho
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
Sub Consolidar()
'Definimos las variables
Dim Misdatos(), i, Matriz_Archivo, Ruta_archivo, Base_archivos
Dim Libro_nuevo As Workbook
'Controlamos posibles errores al introducir los datos de la matriz
On Error GoTo Control_e
'Refresco de pantalla desactivado
Application.ScreenUpdating = False
'Hacemos que la hoja2 (donativos) sea la hoja activa
Sheets(2).Select
'Igualamos el destino del archivo base con el resto de archivos a consolidar
Ruta_archivo = ThisWorkbook.Path & "\"
'Buscamos los archivos que sean Excel (xls, xlsx, xlsm ...)
Base_archivos = Dir(Ruta_archivo & "*.xl*")
'Empezamos a contar archivos desde 1
Matriz_Archivo = 1
'Creamos bucle asignando los nuevos archivos a la matriz creada (siempre que existan archivos)
Do While Base_archivos <> Empty
'Si el nombre de los archivos a consolidar no son iguales al
'nombre del archivo principal entonces empezar a contar
If Base_archivos <> ThisWorkbook.Name Then
'procedemos a contar igualando y sumando 1
Matriz_Archivo = Matriz_Archivo + 1
'controlamos el tamaño de la matriz
ReDim Preserve Misdatos(1 To Matriz_Archivo)
Misdatos(Matriz_Archivo) = Base_archivos
End If
'Usamos la variable base archivo para realizar la búsqueda
Base_archivos = Dir()
Loop
If Matriz_Archivo > 0 Then
'Definimos el tamaño de la matriz
ReDim Matriz(1 To Matriz_Archivo, 2 To 29)
'Especificamos el mayor y menor subíndice en la matriz de datos
For i = LBound(Misdatos) To UBound(Misdatos)
'Asignamos cada uno de los archivos a vble Libro_nuevo
Set Libro_nuevo = Workbooks.Open(Ruta_archivo & Misdatos(i))
With Libro_nuevo.Worksheets(1)
'Asignamos datos a la matriz
'desde cada uno de los archivos que se van consolidando
Matriz(i, 2) = Libro_nuevo.Worksheets(1).Range("M15")
Matriz(i, 3) = Libro_nuevo.Worksheets(1).Range("M18")
Matriz(i, 4) = Libro_nuevo.Worksheets(1).Range("M21")
Matriz(i, 5) = Libro_nuevo.Worksheets(1).Range("M24")
Matriz(i, 6) = Libro_nuevo.Worksheets(1).Range("M28")
Matriz(i, 7) = Libro_nuevo.Worksheets(1).Range("M29")
Matriz(i, 8) = Libro_nuevo.Worksheets(1).Range("M30")
Matriz(i, 9) = Libro_nuevo.Worksheets(1).Range("M31")
Matriz(i, 10) = Libro_nuevo.Worksheets(1).Range("M32")
Matriz(i, 11) = Libro_nuevo.Worksheets(1).Range("M33")
Matriz(i, 12) = Libro_nuevo.Worksheets(1).Range("M34")
Matriz(i, 13) = Libro_nuevo.Worksheets(1).Range("M35")
Matriz(i, 14) = Libro_nuevo.Worksheets(1).Range("M36")
Matriz(i, 15) = Libro_nuevo.Worksheets(1).Range("M37")
Matriz(i, 16) = Libro_nuevo.Worksheets(1).Range("M38")
Matriz(i, 17) = Libro_nuevo.Worksheets(1).Range("M39")
Matriz(i, 18) = Libro_nuevo.Worksheets(1).Range("M40")
Matriz(i, 19) = Libro_nuevo.Worksheets(1).Range("M42")
Matriz(i, 20) = Libro_nuevo.Worksheets(1).Range("M43")
Matriz(i, 21) = Libro_nuevo.Worksheets(1).Range("M44")
Matriz(i, 22) = Libro_nuevo.Worksheets(1).Range("M45")
Matriz(i, 23) = Libro_nuevo.Worksheets(1).Range("M46")
Matriz(i, 24) = Libro_nuevo.Worksheets(1).Range("M47")
Matriz(i, 25) = Libro_nuevo.Worksheets(1).Range("M48")
Matriz(i, 26) = Libro_nuevo.Worksheets(1).Range("M49")
Matriz(i, 27) = Libro_nuevo.Worksheets(1).Range("M50")
Matriz(i, 28) = Libro_nuevo.Worksheets(1).Range("M51")
Matriz(i, 29) = Libro_nuevo.Worksheets(1).Range("M52")
End With
'cerramos el libro
Libro_nuevo.Close
Next i
End If
'Asignamos en la hoja2 los datos introducidos en la matriz.
With ThisWorkbook.ActiveSheet
'Limpiamos contenidos de la hoja hoja
ThisWorkbook.ActiveSheet.Range("A1").CurrentRegion.Offset(1).ClearContents
'Pegamos datos respetando la cabecera que hemos colocado como fija,
'y especificamos que las columnas que utilizamos son iguales a las definidas en las matrices,
'en este caso son 29 columnas
ThisWorkbook.ActiveSheet.Range("A2").Resize(Matriz_Archivo, 29) = Matriz
'Justificamos celdas
ThisWorkbook.ActiveSheet.Range("A1").CurrentRegion.EntireColumn.AutoFit
End With
'En caso de que en la carpeta los archivos sean 0 cerramos proceso
If Matriz_Archivo = 0 Then
MsgBox "NO HAY ARCHIVOS PARA CONSOLIDAR EN LA CARPETA ACTUAL", vbExclamation, "CARPETA VACÍA"
Exit Sub
'Si los datos de la matriz no son correctos saltará mensaje
Control_e:
MsgBox "VERIFICA QUE HAS INTRODUCIDO CORRECTAMENTE LOS PARAMETROS DE LA MATRIZ EN EL CODIGO VBA", vbExclamation, "CARPETA VACIA"
Exit Sub
End If
'Liberamos memoria datos nueva hoja
Set Libro_nuevo = Nothing
'Liberamos matriz de datos
Erase Misdatos
'Refresco de pantalla activo
Application.ScreenUpdating = True
End
- Imagen_Ejemplo.rar(295,8 KB)
- Ejemplo_Excel.rar(29,8 KB)
Valora esta pregunta
0