Conocer Total de registros de archivo TXT

25/07/2006 - 19:37 por Marvin | Informe spam
Que tal Grupo, Alguien sabe Como puedo yo saber cuantos registros (lineas)
tiene un archivo TXT???

El punto es que proceso contantemente archivos TXT con 50 mil, 60 mil y
hasta 70 u 80 mil lineas, por ende mi marco sólo procesará 65535 lineas,
existe alguna forma por código (vb) en donde yo pueda saber que se esta
superando este limite y de igual manera (por codigo) dividir este archivo en
2 HOJAS y correr el proceso 2 veces, en HOJA1 y HOJA2.

GRCS

Preguntas similare

Leer las respuestas

#1 KL
25/07/2006 - 20:35 | Informe spam
Hola Marvin,

Revisa el siguiente enlace:

http://support.microsoft.com/kb/120596/es


Saludos,
KL


"Marvin" wrote in message news:
Que tal Grupo, Alguien sabe Como puedo yo saber cuantos registros (lineas)
tiene un archivo TXT???

El punto es que proceso contantemente archivos TXT con 50 mil, 60 mil y
hasta 70 u 80 mil lineas, por ende mi marco sólo procesará 65535 lineas,
existe alguna forma por código (vb) en donde yo pueda saber que se esta
superando este limite y de igual manera (por codigo) dividir este archivo en
2 HOJAS y correr el proceso 2 veces, en HOJA1 y HOJA2.

GRCS
Respuesta Responder a este mensaje
#2 Marvin
26/07/2006 - 00:54 | Informe spam
GRCS Kal-el... perdón KL

Lo integre en mi macro pero no hace lo que se supone debe hacer...Insertar
una nueva hoja con el reto de las lineas que sucede?? este es el código..

Sub LargeFileImport()

'Dimension Variables
Dim ResultStr As String
Dim FileName As String
Dim FileNum As Integer
Dim Counter As Double
Dim dia As String
Dim mes As String
Dim anio As String
Dim c As String

dia = Format(Date, "dd")
mes = Format(Date, "mm")
anio = Format(Date, "yy")
mescomp = Format(Date, "mmmm")

c = InputBox("Indica el ciclo que validas a 2 digitos", "VALIDACION DE
CICLOS", "00")

Workbooks.OpenText FileName:="C:evenue\datos_salida\DetC" + c + "" +
mes + "" + anio + ".txt", _
Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True,
Semicolon:=False, _
Comma:=False, Space:=False, Other:=True, OtherChar:="|", FieldInfo:= _
Array(Array(1, 1), Array(2, 2), Array(3, 1), Array(4, 1), Array(5,
1), Array(6, 1), Array(7 _
, 1), Array(8, 1), Array(9, 1), Array(10, 2), Array(11, 4),
Array(12, 1), Array(13, 1), Array _
(14, 1), Array(15, 1), Array(16, 1), Array(17, 1)),
TrailingMinusNumbers:=True

'Ask User for File's Name
'FileName = InputBox("Please enter the Text File's name, e.g. test.txt")
'Check for no entry
If FileName = "" Then End
'Get Next Available File Handle Number
FileNum = FreeFile()
'Open Text File For Input
Open FileName For Input As #FileNum
'Turn Screen Updating Off
'Application.ScreenUpdating = False
'Create A New WorkBook With One Worksheet In It
Workbooks.Add template:=xlWorksheet
'Set The Counter to 1
Counter = 1
'Loop Until the End Of File Is Reached
Do While Seek(FileNum) <= LOF(FileNum)
'Display Importing Row Number On Status Bar
Application.StatusBar = "Importing Row " & _
Counter & " of text file " & FileName
'Store One Line Of Text From File To Variable
Line Input #FileNum, ResultStr
'Store Variable Data Into Active Cell
If Left(ResultStr, 1) = "=" Then
ActiveCell.Value = "'" & ResultStr
Else
ActiveCell.Value = ResultStr
End If

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

End Sub

"KL" escribió:

Hola Marvin,

Revisa el siguiente enlace:

http://support.microsoft.com/kb/120596/es


Saludos,
KL


"Marvin" wrote in message news:
> Que tal Grupo, Alguien sabe Como puedo yo saber cuantos registros (lineas)
> tiene un archivo TXT???
>
> El punto es que proceso contantemente archivos TXT con 50 mil, 60 mil y
> hasta 70 u 80 mil lineas, por ende mi marco sólo procesará 65535 lineas,
> existe alguna forma por código (vb) en donde yo pueda saber que se esta
> superando este limite y de igual manera (por codigo) dividir este archivo en
> 2 HOJAS y correr el proceso 2 veces, en HOJA1 y HOJA2.
>
> GRCS


Respuesta Responder a este mensaje
#3 zipzap
26/07/2006 - 09:14 | Informe spam
Marvin,

Aquí puse una macro para abrir un fichero de texto y cargarlo en una
hoja de cálculo.

http://groups.google.es/group/micro...6d7061c432

Tienes el control completo de dos formas:
LOF(numfile) es la instrucción que permite saber la
longitud del registro. Si la longitud de los registros es fija,
Numregistros = LOF(numfile)/Longitud de Registro. En la "longitud de
registro" debes añadirle 2 por los caracteres CR y LF que siempre
están al final de cada registro en ficheros secuenciales de texto.
La otra forma es el conteo de registros según los vas
leyendo.

El problema que tienes es que abres el fichero con el sistema de
importación de ficheros de texto y ese sistema no verifica el número
de registros. Si no quieres prescindir de esa forma de cargar el
fichero entonces debes abrirlo antes, contar los registros y volver a
cerrarlo.

código-
'FileToOpen, es una variable String que contiene el path y el fichero a
abrir
'iFilenumOpen es una variable Integer a la que se asinga un número de
fichero que no está usado

iFilenumOpen = FreeFile
Open FileToOpen For Input Access Read As #iFilenumOpen

'Metodo 1 -
LongitudArchivo = LOF(iFilenumOpen)
NumRegs = LongitudArchivo/LongitudRegistro
IF NumRegs >= 65535 THEN -> Lo que quieras
hacer

'Si no sabes la longitud del registro o es variable aconsejo el metodo
2.

'Metodo 2 -
'LineaLeida es el contador de registros leidos del fichero
LineaLeida = 0
'Leer hasta el final del archivo EOF(numeroarchivo)
Do While Not (EOF(iFilenumOpen))
Line Input #iFilenumOpen, DatosREAD
LineaLeida = LineaLeida + 1
IF LineaLeida = 65535 THEN -> lo que quieras
hacer
Loop
' al final hagas lo que hagas
CLOSE
' Tu codigo a partir de aquí.

Saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida