|
|
Escrito por
Felipe Prado
el 7 de Octubre
Hola Estimados: Ficheros adjuntos: EXPLICACION |
|
|
Citar |
Ver mensaje
|
|
Escrito por
Armando Montes
el 7 de Octubre
Felipe, aqui hay otro codigo que segun comentan funciona de maravilla: |
|
Escrito por
Arquimedes03 Sccj
el 8 de Octubre
Hola Felipe,...
A mí también me interesa mucho este tema de cómo importar archivos de texto de un gran número de filas (registros), así que le he estado dando vueltas, a ratos, este último par de días; disculpa, por ello, que haya tardado en contestarte. Mira! , he estado haciendo pruebas con los códigos que se proponen en los diferentes enlaces que mencionáis en este hilo... En el adjunto te muestro los módulos de las macros que no me han dado error; son 3 (el resto me daban algún tipo de error en tiempo de ejecución):
A) Módulo1_inicial. Módulo tal como aparece en la página del respectivo link. B) Módulo1_modificado. El anterior retocado y "recomentado" por mí. C) Módulo2_conADO. Módulo correspondiente a ese último link que sugiere Armando.
Las pruebas las he hecho con el txt resultante de haber extraído la primera mitad del archivo al que haces referencia (ese de tamaño aproximado de 60 Mb). En total son algo más de 86000 filas, y tamaño de unos 30 Mb. Te hago a continuación un breve comentario de los resultados que he obtenido. Ten en cuenta que lo he hecho en mi portátil, que es bastante "modestito" (supongo que, a mayor potencia de equipo, los tiempos se reducirían).
A) Importación en un nuevo libro, en dos Hojas. Tarda aproximadamente 1 minuto. Todo en la columna A (no separa los campos en columnas). Al pasar después el asistente pata Texto a Columnas a toda la columna A, se demoraba unos tres minutos para una sóla Hoja. Además, tras aplicar el asistente, aparecían algunos valores en ciertos campos que no eran los mismos que en el archivo txt. Al respecto, me sorprendió que, por más que modifiqué los parámetros en el propio asistente, nunca me salía el resultado correcto (no sé qué podré haber hecho mal al ejecutar el asistente, o si no es lo apropiado, en fin...)
B) Ahora, con el anterior módulo retocado por mí (para que en el resultado aparezcan ya los campos separados por columnas), todo ok, en el sentido de que, en el nuevo libro, los campos aparecen exactamente igual que en el archivo txt. INCONVENIENTE: el tiempo! (al haberle yo añadido el código para que separe los campos en la porpia lectura de cada fila del txt). Ya te digo que tarda muchíííísimo; a mí me llevo unos 15 minutos la impostación de ese txt de 30 Mb.
C) (el código correspondiente a ese último enlace que menciona Armando)... Con ADO. A mi modo de ver, y sobre todo en lo que a tiempo se refiere, la más apropiada; apenas tardó unos segundos. Inconveniente: tal como está planteado ese código, algunos campos se obtienen en un formato muy diferente al que presentan en el archivo txt. Lo ideal sería modificar esa macro a fin de que el resultado, en las Hojas añadidas, apareciese con las misma presentación que en las filas del txt.
---> Al respecto de esa observación que te hago en c), a mí se me escapa cómo modificar el código (aunque me pondré a ello, en breve, a ver qué tal me va). Si alguien sabe cómo retocar esa solución -la de ADO- para que de el resultado igual a cómo aparece en el archivo txt, le estaría muy agradecido, pues ya podéis deducir que estoy muy interesado en este tema, y, desde luego, que, empleando ADO, parece ser que es como más rápido se resuleve (al menos, de entre las posibles soluciones que van apareciendo en el hilo).
Saluditos!
Ficheros adjuntos: ImportaTXTmas65536 |
|
|
Escrito por
Felipe Prado
el 12 de Octubre
Arquimedes, habia perdido el hilo a este tema, pero analice el archivo y tus explicaciones, muchas gracias, me resulto haber distribuido el archivo en dos hojas, algo lento pero funciona que es lo importante. |
|
Escrito por
Arquimedes03 Sccj
el 12 de Octubre
Me alegro que volvieses a retomar esta cuestión. Mira, después de mi anterior post en este hilo, me he estado currando el código del primer enlace que se sugería (aunque ahora no estoy seguro de si es el primero o el segundo -después de las vueltas que le he dado ya-),... El que redimensiona la matriz de campos (con ReDim) y se basa en el empleo de las funciones Split y UBound. Creo que le he ganado algo de tiempo, además de no llevar mucho código (aunque me costó bastante el encajar el uso de esas funciones con el quick de las 65536 filas de una hoja, a fin de que la solución valiese para cualquier nº de filas -registros- a importar, ya fuese <655536, 65536, o >65536). Al respecto, adjunto le libro en el que planteo las posibles soluciones que cumplen con lo que se demandaba desde un principio: la importación de todo el. Txt (o del nº de filas especificado), ya sea en hojas añadidas o en un nuevo libro (eso es muy fácil de modificar), y respetando el formato original de todos los campos en el. Txt. En mi opinión, los Módulos 13 y 53 son los más indicados de usar, aunque este último (el 53, con ADO) sea un pelín más rápido, pero con el "pequeño inconveniente" comentado en la hoja.
Respecto al otro hilo, pues Abraham tuvo la amabilidad de contestar, y además con mucho detalle. En fin, no le doy más vueltas a este tema (al menos "de momento", puesto que ahora estoy profundizando en el tema de ADO, y, si tengo alguna pega, ya preguntaré en otro hilo). Espero haberte ayudado en algo, al tiempo que también a mí me ha venido muy bien.
Saluditos!
Ficheros adjuntos: Conclusiones |
|
Al escribir en el debate:
|