Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I have written a macro to import some large csv file and then split
them into different sheets. However, I found my macro speed is very slow. Can anybody help? Moreover, I found something very strange about my program. It seems it is getting slower and slower once it starts. The time it takes to process the same number of lines from the csv file is becoming longer and longer. Any suggestions? Thanks a lot. Man Private Sub Workbook_Open() 'Dimension Variables Dim ResultStr As String Dim FileName As String Dim FileNum As Integer Dim Counter As Double '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 'Display Importing Row Number On Status Bar Application.StatusBar = "Split Column A into different columns, please Wait " & Counter Columns("A:A").Select Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, Comma:=True '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 'Display splitting column A into smaller columns On Status Bar Application.StatusBar = "Converting Column A into different columns by commas, Please wait(the last bit)." Columns("A:A").Select Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, Comma:=True 'Close The Open Text File Close 'Remove Message From Status Bar Application.StatusBar = False Workbooks("splitter.xls").Close SaveChanges:=False End Sub |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Excel 2007 VBA-XLL macro speed slow | Excel Discussion (Misc queries) | |||
Slow speed Excel with Centrino duo | Excel Discussion (Misc queries) | |||
Speed up and slow down, the auto-scroll. | Excel Discussion (Misc queries) | |||
Why does macro speed slow after Excel Print or Print Preview? | Excel Programming | |||
Macro speed - SLOW in 2002, FAST in '97?? | Excel Programming |