Imports a text file into Excel even if the number of lines in that file exceeds Excel's total number of rows limitation.
Visual Basic
' This script was written for folks trying to import a text file into ' Excel 2003 that exceed the row limitations. ' This version works on Windows XP and has not been tested on any other OS. Const ForReading = 1 Const ForAppending = 2 Set objDialog = CreateObject("UserAccounts.CommonDialog") objDialog.Filter = "All Files|*.*" objDialog.InitialDir = "C:\" intResult = objDialog.ShowOpen If intResult = 0 Then Wscript.Quit Else BreakFile = objDialog.FileName End If Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile(BreakFile, ForReading) FiletoSplit = objFSO.GetFileName(BreakFile) FolderDest = Mid(objFSO.GetAbsolutePathName(BreakFile),1, _ Len(objFSO.GetAbsolutePathName(BreakFile))-(Len(FiletoSplit))) FileSplitName = objFSO.GetBaseName(BreakFile) dtmStart = Now() strContents = objFile.ReadAll FileNum = 1 fname = FolderDest & FileSplitName & "Split_" & FileNum & ".txt" Set objFile1 = objFSO.OpenTextFile(fname, ForAppending, True) CountLines = 0 arrLines = Split(strContents, vbCrLf) If ubound(arrLines) < 64500 Then msgbox "This file will fit into Excel already. No split is necessary.",48,"SplitFile" Wscript.Quit End If HeaderText = arrLines(0) For i = 0 to ubound(arrlines) strLine = arrLines(i) & vbCrLf objFile1.Write strLine If (Countlines) < 64500 Then countlines = countlines + 1 ElseIf Countlines >= 64500 Then objFile1.Close Countlines = 0 FileNum = FileNum + 1 fname = FolderDest & FileSplitName & "Split_" & FileNum & ".txt" Set objFile1 = objFSO.OpenTextFile(fname, ForAppending, True) objFile1.Write HeaderText & vbCrLf End If Next objFile.Close dtmEnd = Now() If MsgBox("There were " & FileNum & " files created." & vbcrlf & _ "The files were put into this folder: " & FolderDest & _ vbCrLf & "The script took " & DateDiff("s", dtmStart, dtmEnd) & " seconds " & _ "to break the " & FiletoSplit & " file." & vbcrlf & vbcrLF & _ "Click OK to open destination folder or CANCEL to quit.", _ 1,"SplitFile") = vbOK Then Set objShell = CreateObject("Shell.Application") strPath = FolderDest objShell.Explore strPath End If
Verified on the following platforms
Windows Server 2008 R2 | No |
Windows Server 2008 | No |
Windows Server 2003 | No |
Windows 7 | No |
Windows Vista | No |
Windows XP | No |
Windows 2000 | No |
This script is tested on these platforms by the author. It is likely to work on other platforms as well. If you try it and find that it works on another platform, please add a note to the script discussion to let others know.
0 Comment to "Import a Large Text File"
Post a Comment