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 variablesDim Misdatos(), i, Matriz_Archivo, Ruta_archivo, Base_archivos
Dim Libro_nuevo As Workbook
'Controlamos posibles errores al introducir los datos de la matrizOn Error GoTo Control_e
'Refresco de pantalla desactivadoApplication.ScreenUpdating = False
'Hacemos que la hoja2 (donativos) sea la hoja activaSheets(2).Select
'Igualamos el destino del archivo base con el resto de archivos a consolidarRuta_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 contarIf Base_archivos <> ThisWorkbook.Name Then
'procedemos a contar igualando y sumando 1Matriz_Archivo = Matriz_Archivo + 1
'controlamos el tamaño de la matrizReDim Preserve Misdatos(1 To Matriz_Archivo)
Misdatos(Matriz_Archivo) = Base_archivos
End If
'Usamos la variable base archivo para realizar la búsquedaBase_archivos = Dir()
Loop
If Matriz_Archivo > 0 Then 'Definimos el tamaño de la matrizReDim Matriz(1 To Matriz_Archivo, 2 To 29)
'Especificamos el mayor y menor subíndice en la matriz de datosFor i = LBound(Misdatos) To UBound(Misdatos)
'Asignamos cada uno de los archivos a vble Libro_nuevoSet 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 consolidandoMatriz(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.CloseNext i
End If
'Asignamos en la hoja2 los datos introducidos en la matriz. With ThisWorkbook.ActiveSheet 'Limpiamos contenidos de la hoja hojaThisWorkbook.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 columnasThisWorkbook.ActiveSheet.Range("A2").Resize(Matriz_Archivo, 29) = Matriz
'Justificamos celdasThisWorkbook.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 ThenMsgBox "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á mensajeControl_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 datosErase Misdatos
'Refresco de pantalla activoApplication.ScreenUpdating = True
End
- Imagen_Ejemplo.rar(295,8 KB)
- Ejemplo_Excel.rar(29,8 KB)
Valora esta pregunta


0


