** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Seleccionar archivo e importar datos
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoSeleccionar archivo e importar datos

 Responder Responder
Autor
Mensaje
Checolin Ver desplegable
Habitual
Habitual
Avatar

Unido: 29/Octubre/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 100
Enlace directo a este mensaje Tema: Seleccionar archivo e importar datos
    Enviado: 23/Febrero/2012 a las 01:28
Hola nuevamente, la consulta que les hago ahora es sobre cómo puedo seleccionar un archivo e importarlo a una hoja de Excel específica.
 
No tengo problema para hacerlo en el sentido de que por medio de DATOS/OBTENER DATOS EXTERNOS lo haga de forma manual o incluso hacerlo automatizado por medio de la grabadora, el problema es que de esta última forma solo queda dirigido para un solo archivo y lo que quiero hacer es poder seleccionar un archivo diferente y posterior a la selección que haga la importación.
 
Sé que para mostrar el Cuadro de Diaogo Abrir se tienen varias opciones como el FileDialog, Application.Dialog(xlDialogOpen).Show, Application.FindFile, por mencionar algunas, con estas opciones puedo seleccionar el archivo a usar, lo que no sé como hacer es que este archivo lo tome como si fuera el archivo a importar.
 
El código que resulta de la grabadora es el siguiente: Solo pongo un fragmento del código donde creo que está el meollo, el resto son instrucciones de formateo.
 
Sub ImpDatar()
 
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;D:\Ruta\Archivo.txt", Destination:=Range("$A$1"))
 .Name = "Archivo.txt"
 .Fielnames = True
 .RowNumbers = False
 
Los datos a importar quedarán en una sola columna formateada como texto.
 
Como lo mencioné, de la forma en que lo hace la grabadora lo deja para un solo archivo en una ruta específica pero no siempre será esa ruta o el archivo.
 
 
Esperando que mi explicación sea clara para que me puedan proporcionar alguna idea de como lo puedo hacer.
 
Agradeciendo como siempre su ayuda me despido.
 
Saludos
Cuando Dios nos mande inspiración es mejor que nos encuentre trabajando.
Arriba
Jordi-Albert Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Abril/2006
Localización: Alemania
Estado: Sin conexión
Puntos: 4315
Enlace directo a este mensaje Enviado: 23/Febrero/2012 a las 13:33
para "buscar" el fichero

strFile = Application.GetOpenFilename("Ficheros TXT, (*.txt), *.txt")

para leerlo

lnPointer = FreeFile
Open strFile For Binary Access Read As #lnPointer

Do While Not EOF(lnPointer)
    Line Input #lnPointer, strLinea
    Debug.Print strLinea
Loop
Close #lnPointer


consulta la ayuda para más detalles

Editado por Jordi-Albert - 23/Febrero/2012 a las 13:34
Nota: Jordi-Albert es, todo él, un nombre. Mi nombre
Arriba
Checolin Ver desplegable
Habitual
Habitual
Avatar

Unido: 29/Octubre/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 100
Enlace directo a este mensaje Enviado: 25/Febrero/2012 a las 02:24
Jordi-Albert, primeramente disculpa por recortar tu nombre, como tal no lo conocía, suponía que era un nombre compuesto de dos nombres.
 
Ahora, gracias por tu ayuda ya que me dio idea de como hacerlo, te comento que para buscar el fichero no tuve problema, este se presento al momento de leerlo ya que resulta que tiene líneas vacias entre líneas por lo que al llegar a una de ellas se generaba un error de que encontraba más datos al finalizar el archivo, ante esto pero ya con una idea más clara de como hacerlo, en base a tu orientación, recordé que alguna vez había visto algo de Visual Basic y en esa práctica se había hecho el manejo de archivos de texto.
 
(Obviamente no supe como resolver el problema que se presentó con tu propuesta Confused Embarrassed)
El código que terminé usando y que satisfizo mis necesidades es el siguiente.
Sub Abrir_Archivo()
 
   strFile=Application.GetOpenFileName
 
   Range("A1").Select
   Set fso=CreateObject("Scripting.FileSystemObject")
   SetArchivo=fso.OpenTextFile(strFile,1)
   lectura=Archivo.Readall
   Archivo.Close
   Set fso=Nothing
   Set Archivo=Nothing
 
   lectura=Split(lectura,vbCrLf)
   Range("A1").Select
 
   For i = 0 to Ubound(lectura)
      Activecell=lectura(i)
      Activecell.Offset(1,0).Select
   Next
   Range("A1").Select
 
End Sub
 
Esta rutina abre el archivo de texto seleccionado completo tal y como está en el original en una sola columna de una hoja de Excel sin formato alguno, esto es redundante pero mejor aclararlo por si alguien quiere usar el código.
 
Pues bien, como lo que quería hacer era seleccionar un archivo y abrirlo en Excel quedé resuelto.
 
Agradeciendo nuevamente tu ayuda me despido por el momento.
 
Si no hay nada más que agregar podemos dar por cerrado el hilo, muchas gracias. 
 
Cuando Dios nos mande inspiración es mejor que nos encuentre trabajando.
Arriba
Jordi-Albert Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Abril/2006
Localización: Alemania
Estado: Sin conexión
Puntos: 4315
Enlace directo a este mensaje Enviado: 25/Febrero/2012 a las 20:44
el problema que te has encontrado es que la lectura del fichero se ha efectuado de una sola vez... por lo que tu solución es la correcta (el expandir las lineas en un array)

pero también te puedes encontrar en que solo lee una parte del fichero, teniendo que volver a leer hasta encontrar la marca de final (EOF()).... y esta es la versión que en principio te sujeria.

de todas maneras me alegra que que hayas podido encontrar tu solo la solución.

(y gracias por utilizar mi nombre entero)
Nota: Jordi-Albert es, todo él, un nombre. Mi nombre
Arriba
Checolin Ver desplegable
Habitual
Habitual
Avatar

Unido: 29/Octubre/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 100
Enlace directo a este mensaje Enviado: 11/Mayo/2012 a las 20:18
Hola, les pido de favor si pueden cerrar el hilo, este quedó resuelto.
 
Muchas gracias.
Cuando Dios nos mande inspiración es mejor que nos encuentre trabajando.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable