importar archivos .dat en excel cuando hay más de 65536filas

suat_sanidad

New Member
Joined
Dec 4, 2007
Messages
2
Hola!
Quiero importar un archivo muy grande, con más de 65536 filas a excel. El archivo es .dat por si eso sirve de algo. He leido en un thread del 22 de mayo del 2002 algo relacionado, pero no lo entiendo. Alguien puede por favor ayudarme con una explicación para dummies? Muchas gracias
 

Excel Facts

Waterfall charts in Excel?
Office 365 customers have access to Waterfall charts since late 2016. They were added to Excel 2019.
Bienvenido a MrExcel.com. ¿Puede usted darnos un vínculo a tal thread? ¿Usted está importando manualmente o por medio de VBA (un macro)?
 
Upvote 0
Bueno,

Hay dos soluciones. Una es usar VBA para abrir el archivo, leer cada línea, poner la línea del archivo en una celda y al llegar a las 65,535 líneas, crear una hoja nueva y correr el bucle otra vez.

La otra manera es quebrar el archivo antemano y importarlo pieza por pieza. Dado que usted está importando mano creo que esta segunda opción le serviría mejor.

Aquí le doy código que uno corre por fuera de Excel para quebrar el archivo en piezas de 65,535 líneas en cada archivo.
Code:
Const c_fsoForReading = 1
Const c_lngMaxLines = 65535

Set objDialog = CreateObject("UserAccounts.CommonDialog")

With objDialog
    .Filter = "Text Files|*.txt"
    .InitialDir = "D:\"
    intResult = .ShowOpen
End With

If intResult = 0 Then
    WScript.Quit
Else
    '// do nothing
    '// WScript.Echo objDialog.FileName
End If

strFullFileName =  objDialog.Filename
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFileInput  = objFSO.OpenTextFile(strFullFileName, c_fsoForReading)

p = InStrRev(strFullFileName,"\")
strPath = Left(strNewFileName, p)
strFileName = Right(strFullFileName, Len(strFullFileName) - p) 
d = InStrRev(strFileName,".")
strBaseFileName = Left(strFileName,d - 1)
strExt = Right(strFileName,Len(strFileName) - d + 1)


Do While objTextFileInput.AtEndOfStream <> True
    f = f + 1
    m = 10
    strNewFileName = strPath & strBaseFileName & " - " & CStr(f) & strExt
    Set objTextFileOutput = objFSO.CreateTextFile(strNewFileName, TRUE) 
    r = 1
    Do Until r > c_lngMaxLines Or objTextFileInput.AtEndOfStream
        strLine = objTextFileInput.ReadLine
        r = r + 1
        objTextFileOutput.WriteLine strLine
        '// This part not critical. 
        '// I just like seeing what's going on.
        If r Mod m = 0 Then
             WScript.echo FormatNumber( r, 0, FALSE, FALSE, TRUE) & " lines read"  '// & vbcrlf & "m = " & m
             Select Case true
                 Case r >= 250000 : m = 50000
                 Case r >=  50000 : m = 25000
                 Case r >=  20000 : m = 10000
                 Case r >=   5000 : m =  2500
                 Case r >=    500 : m =  1000
                 Case r >=     50 : m =   100
             End Select
        End If
    Loop
    objTextFileOutput.Close
Loop

objTextFileInput.Close
WScript.Echo "Done"

Copiando el código arriba y pegando en un programa como NOTEPAD. Luego salvando el archivo con un nombre como Quebrar65535.vbs

Usted tendrá que abrir un "command prompt". En Windows (en inglés, por lo menos), generalmente se puede hacer "Start | All Programs | Accessories" y verá una opción para eso. Una vez que tiene el command prompt, corre el script teclando cscript quebrar65535.vbs y debe de funcionar.

Si usted conoce suficiente VBA, aquí hay una rutinita que se puede pegar a un modulo en un cuaderno que creará un archivo para hacer pruebas
Code:
Sub MakeDummyFile()

    Open "d:\test65K.txt" For Output As #1
    
    For i = 1 To 250000
        Write #1, Format(i, "000,000")
    Next i
    
    Close #1
End Sub
 
Upvote 0

Forum statistics

Threads
1,223,164
Messages
6,170,444
Members
452,326
Latest member
johnshaji

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top