............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

Importar Datos de Texto

Ver el tema anterior Ver el tema siguiente Ir abajo

Importar Datos de Texto

Mensaje por pacocp el Lun Ene 03, 2011 1:48 am

Feliz año 2011 a toda la comunidad de Excelgali.

Tengo un archivo de texto (.txt) con más de 10'000,000 (diez millones) de registros. Necesito importar todo el archivo en tantas hojas o columnas como sean necesarias. Para empezar la importación selecciono "desde Texto" del grupo "Obtenr datos externos" de la ficha "Datos" y después de alimentar toda la información que me solicita, sale una leyenda que dice:

"Para continuar e importar todos los datos que sea posible, haga clic en Aceptar. A continuación podrá importar el resto de los datos haciendo extensible la operación en otra hoja y empleando el Asistente para importar texto con el fin de excluir los datos ya importados."

Hago lo que dice esta leyenda, le doy clic en Aceptar y me importa los primeros 1'048,576 registros. Me paso a la hoja2 y repito la operación de seleccionar "desde Texto" del grupo "Obtener datos externos" de la ficha "Datos" y en el Asistente para importar texto le pongo en donde dice "Comenzar a importar en la fila" el valor de 1048577.

El resultado es que me trae solamente el registro número 1'048,577 y si le pongo cualquier otro valor en donde comience a importar, por ejemplo en la fila 1048500, me importa solamente los registros del 1'048,500 al 1'048,577, es decir que nunca me importa más alla del registro 1'0148,577,

¿Cómo puedo importar todo el archivo?

Gracias por la ayuda que me puedan brindar, y que tengan un muy buena primera semana del año.

Saludos.

pacocp

Masculino Cantidad de envíos : 22
Edad : 64
Ciudad - Pais : León Guanajuato, México
Version de Excel : XP-2003-2007
Fecha de inscripción : 18/01/2010

Volver arriba Ir abajo

Re: Importar Datos de Texto

Mensaje por GalileoGali el Mar Ene 04, 2011 9:50 pm

Hasta ahora el asistente cuando me pide iniciar en alguna fila superior a la cantidad de filas de la Hoja (se supone que ya pase esa primera parte y qiero volcar una segunda hoja) me arroja error....
hay que investigar, los articulos de microsoft, que lo que vi hasta ahora, hay un reconocimiento de una suerte de bug

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Importar Datos de Texto

Mensaje por pacocp el Miér Ene 05, 2011 12:19 am

Gracias Galileo Gali,

Busqué la respuesta en la red y encontré una macro que tiene Microsoft para estos casos. Estoy incluyendo el código para compartirlo con toda la comunidad y hay una segunda macro que no recuerdo el autor (no es mia) en donde solamente cambia la forma de buscar el archivo txt.

Saludos

=================================================

Sub LargeFileImport1()

Dim ResultStr As String, FileName As String, FileNum As Integer, Counter As Double

FileName = InputBox("Please enter the Text File's name, e.g. test.txt") 'Ask User for File's Name
If FileName = "" Then End 'Check for no entry
FileNum = FreeFile() 'Get Next Available File Handle Number
Open FileName For Input As #FileNum 'Open Text File For Input
Application.ScreenUpdating = False 'Turn Screen Updating Off
Workbooks.Add template:=xlWorksheet 'Create A New WorkBook With One Worksheet In It

Counter = 1 'Set The Counter to 1
Do While Seek(FileNum) <= LOF(FileNum) 'Loop Until the End Of File Is Reached
Application.StatusBar = "Importing Row " & Counter & " of text file " & FileName 'Display Importing Row Number On Status Bar
Line Input #FileNum, ResultStr 'Store One Line Of Text From File To Variable
If Left(ResultStr, 1) = "=" Then 'Store Variable Data Into Active Cell
ActiveCell.Value = "'" & ResultStr
Else
ActiveCell.Value = ResultStr
End If

If ActiveCell.Row = 65536 Then 'For Excel versions before Excel 97, change 65536 to 16384
ActiveWorkbook.Sheets.Add 'If On The Last Row Then Add A New Sheet
Else
ActiveCell.Offset(1, 0).Select 'If Not The Last Row Then Go One Cell Down
End If
Counter = Counter + 1 'Increment the Counter By 1
Loop 'Start Again At Top Of 'Do While' Statement

Close 'Close The Open Text File
Application.StatusBar = False 'Remove Message From Status Bar

End Sub

=================================================

Sub LargeFileImport2()

Dim ResultStr As String, FileName As String, FileNum As Integer, Counter As Double

' FileName = InputBox("Please enter the Text File's name, e.g. test.txt") 'Ask User for File's Name
' If FileName = "" Then End 'Check for no entry
FileName = Application.GetOpenFilename(filefilter:="Archivo de texto (*.txt),*.txt", Title:="Elegir Archivo")
If FileName = "" Then End 'Check for no entry

FileNum = FreeFile() 'Get Next Available File Handle Number
Open FileName For Input As #FileNum 'Open Text File For Input

Application.ScreenUpdating = False 'Turn Screen Updating Off
Workbooks.Add template:=xlWorksheet 'Create A New WorkBook With One Worksheet In It

Counter = 1 'Set The Counter to 1
Do While Seek(FileNum) <= LOF(FileNum) 'Loop Until the End Of File Is Reached
Application.StatusBar = "Importing Row " & Counter & " of text file " & FileName 'Display Importing Row Number On Status Bar
Line Input #FileNum, ResultStr 'Store One Line Of Text From File To Variable
If Left(ResultStr, 1) = "=" Then 'Store Variable Data Into Active Cell
ActiveCell.Value = "'" & ResultStr
Else
ActiveCell.Value = ResultStr
End If

If ActiveCell.Row = 1000000 Then 'For Excel versions before Excel 97, change 65536 to 16384
ActiveWorkbook.Sheets.Add 'If On The Last Row Then Add A New Sheet
Else
ActiveCell.Offset(1, 0).Select 'If Not The Last Row Then Go One Cell Down
End If
Counter = Counter + 1 'Increment the Counter By 1
Loop 'Start Again At Top Of 'Do While' Statement

Close 'Close The Open Text File
Application.StatusBar = False 'Remove Message From Status Bar

End Sub

=================================================

pacocp

Masculino Cantidad de envíos : 22
Edad : 64
Ciudad - Pais : León Guanajuato, México
Version de Excel : XP-2003-2007
Fecha de inscripción : 18/01/2010

Volver arriba Ir abajo

Re: Importar Datos de Texto

Mensaje por GalileoGali el Miér Ene 05, 2011 12:36 am

Las macros son bienvenidas, pero más me hubiera gustado que el support.microsoft hubiera dado una respuesta Excel y no una macro VBA que lleva implícito e l reconocimiento de otro "agujero negro en la aplicacion"

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Importar Datos de Texto

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.