
Matrices VBA Subindice fuera del intervalo
Publicado por Cooltan (3 intervenciones) el 18/07/2017 14:43:14
Hola a todos/as
Tengo varios archivos xml, que voy tratando uno por uno. Cojo el primero lo trato y me quedo con su información y cuando termino de recorrerlo paso al siguiente, y así hasta que ya no me queden mas archivos por tratar.
El problema es que cuando intento redimensionar la matriz, no me deja, ya que me da un erro de subíndice fuera del intervalo. No se como hacer para que la matriz vaya incrementándose cada vez que trato un nuevo fichero, eso sí manteniendo la información. Les detallo lo que tengo:
La variable Matriz () as Variant. La tengo declarada de esta forma.
Posteriormente llamo a una function que se encarga de llevarme el fichero tratado a otra carpeta y empezar con el siguiente.
Traslado_fichero (MyFile)
Cuando empiezo a tratar el Segundo fichero e intento redimensionar la matriz, es cuando ya me salta el error. Justo aquí ReDim Preserve Matriz(n, 30), me muestra el mensaje "Subindice fuera del intervalo"
Me han comentado que el problema es que la variable Matriz es una matriz multidimensional, de hecho, bidimensional, y ReDim sólo redimensiona la última de las dimensiones.
Podrían decirme como podria solucionarlo, alguna idea??
Gracias
Tengo varios archivos xml, que voy tratando uno por uno. Cojo el primero lo trato y me quedo con su información y cuando termino de recorrerlo paso al siguiente, y así hasta que ya no me queden mas archivos por tratar.
El problema es que cuando intento redimensionar la matriz, no me deja, ya que me da un erro de subíndice fuera del intervalo. No se como hacer para que la matriz vaya incrementándose cada vez que trato un nuevo fichero, eso sí manteniendo la información. Les detallo lo que tengo:
La variable Matriz () as Variant. La tengo declarada de esta forma.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
While MyFile <> ""
Workbooks("Fichero.xlsm").Activate
XMLFileName = Mydir & MyFile
Oxmlfile.Load (XMLFileName)
Set nodes = Oxmlfile.SelectNodes("//AINVOICELIST/*")
aux_node = nodes.Length 'Longitud del nodo
n = n + aux_node
j = 1
ReDim Preserve Matriz(n, 30)
n = 0
For Each node1 In nodes
y = 0
Matriz(n, y) = node1.SelectSingleNode("SC").nodeTypedValue()
Matriz(n, y + 1) = Fact & node1.SelectSingleNode("I").nodeTypedValue()
Matriz(n, y + 2) = node1.SelectSingleNode("DATE").nodeTypedValue()
n = n + 1
Next
Posteriormente llamo a una function que se encarga de llevarme el fichero tratado a otra carpeta y empezar con el siguiente.
Traslado_fichero (MyFile)
1
MyFile = Dir(Path & MyExtension)
Cuando empiezo a tratar el Segundo fichero e intento redimensionar la matriz, es cuando ya me salta el error. Justo aquí ReDim Preserve Matriz(n, 30), me muestra el mensaje "Subindice fuera del intervalo"
Me han comentado que el problema es que la variable Matriz es una matriz multidimensional, de hecho, bidimensional, y ReDim sólo redimensiona la última de las dimensiones.
Podrían decirme como podria solucionarlo, alguna idea??
Gracias
Valora esta pregunta


0