Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Larry,
I will probably use it after I write some code to strip the Y-values before the import< Replace the line If tsRead.AtEndOfStream Then Exit Do with this line If sTest = " " Then Exit Do This will stop the parsing at the line with the single space--no need to strip the y-values. I was testing the macro on a souce file with no y-values and then forgot to revise it back to work with the real-life format of the file. I'll be glad to help with any more bugs. Regards, Shockley "L Mehl" wrote in message ... Shockley -- I will probably use it after I write some code to strip the Y-values before the import, to save perhaps more time. Larry "shockley" wrote in message ... Larry, You're quite welcome. I'm naturally a bit curious if it helps you at all--I wasn't sure if it would run fast enough. For a source file with 65534 x-values, my macro, on my machine runs 7 seconds. To simply open the file with Excel and copy into another workbook, as with this code: Sub Macro2() BeginTime = Now Set fso = CreateObject("Scripting.FileSystemObject") Set oSourceFile = fso.GetFile(SaveDir & "testSource.txt") Set tsRead = oSourceFile.OpenAsTextStream(ForReading, TristateUseDefault) Do sTest = tsRead.ReadLine LineCount = LineCount + 1 Cells(LineCount, 1) = sTest If tsRead.AtEndOfStream Then Exit Do Loop Until LineCount = 65536 Runtime = (Now - BeginTime) * 86400 ThisWorkbook.Sheets(1).Cells(1, 5) = Runtime End Sub it takes 3 seconds. But this code has the line count limitation. To read the text file line by line and place each x-value in Excel, as with this code: Sub Tester() BeginTime = Now Workbooks.OpenText _ FileName:=SaveDir & "testWrite.txt", _ Origin:=xlWindows, _ StartRow:=1, _ DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=True, _ Tab:=False, _ Semicolon:=False, _ Comma:=False, _ Space:=True, _ Other:=False, _ FieldInfo:=Array(Array(1, 1), _ Array(2, 1), Array(3, 1)) Set wbk = ActiveWorkbook With wbk.Sheets(1) Set rngEnd = .Cells(1, 1).End(xlDown) If Not rngEnd Is Nothing Then iRow = rngEnd.Row Set rngSource = Range(.Cells(1, 1), .Cells(iRow, 1)) With ThisWorkbook.Sheets(1) Set rngDest = Range(.Cells(1, 1), .Cells(iRow, 1)) End With rngDest.Value = rngSource.Value End If End With wbk.Close SaveChanges:=False Runtime = (Now - BeginTime) * 86400 Cells(1, 5) = Runtime End Sub takes 23 seconds. So, my code is half as fast as the simplest, line-count-limited method, but about 3 times as fast as the method you may have tried. Regards, Shockley "L Mehl" wrote in message ... Shockley -- Thank you for the code. I appreciate all that effort. Larry "L Mehl" wrote in message ... Another application creates text files which I import into a worksheet for further processing. The text file looks like: ARRAY 1 3023 <--3023 indicates how many X-values are in the file #X-values, ...some more misc text ... 0.378228 0.737527 1.113739 1.488899 1.866231 2.257432 ... more X-values <--one space in this line #Y-values 0.195559 0.152420 0.126161 0.199365 0.173638 ... more Y-values I need only the first 2 rows plus all the X-values (up to but not including the line containing one space. There could be 65,500+ X-values, and line-by-line processing is slow with many values to import. Is there a way in VBA to import a specified number of lines, without using a line-by-line method? expression.OpenText(...) has a StartRow parameter, but no "EndRow" as far as I can tell. Does anyone know of a text-file parsing program or a method which could be used to write a program which could be called by VBA, to create a new file after stripping the rows below and including the line containing one space? Thanks for any help. Larry Mehl --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.600 / Virus Database: 381 - Release Date: 2/28/2004 --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.600 / Virus Database: 381 - Release Date: 2/28/2004 --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.600 / Virus Database: 381 - Release Date: 2/29/2004 |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Shockley --
Thank you. You are very generous to help me so completely. Larry "shockley" wrote in message ... Larry, I will probably use it after I write some code to strip the Y-values before the import< Replace the line If tsRead.AtEndOfStream Then Exit Do with this line If sTest = " " Then Exit Do This will stop the parsing at the line with the single space--no need to strip the y-values. I was testing the macro on a souce file with no y-values and then forgot to revise it back to work with the real-life format of the file. I'll be glad to help with any more bugs. Regards, Shockley "L Mehl" wrote in message ... Shockley -- I will probably use it after I write some code to strip the Y-values before the import, to save perhaps more time. Larry "shockley" wrote in message ... .... --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.600 / Virus Database: 381 - Release Date: 2/28/2004 |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Larry,
I have a weakness for text file manipulation--it's been my pleasure! Regards, Shockley "L Mehl" wrote in message ... Shockley -- Thank you. You are very generous to help me so completely. Larry "shockley" wrote in message ... Larry, I will probably use it after I write some code to strip the Y-values before the import< Replace the line If tsRead.AtEndOfStream Then Exit Do with this line If sTest = " " Then Exit Do This will stop the parsing at the line with the single space--no need to strip the y-values. I was testing the macro on a souce file with no y-values and then forgot to revise it back to work with the real-life format of the file. I'll be glad to help with any more bugs. Regards, Shockley "L Mehl" wrote in message ... Shockley -- I will probably use it after I write some code to strip the Y-values before the import, to save perhaps more time. Larry "shockley" wrote in message ... ... --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.600 / Virus Database: 381 - Release Date: 2/28/2004 |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Can I import text file of cash flow to excel file then use formula | Excel Discussion (Misc queries) | |||
Set Defaults in File Import of a Text File | Excel Worksheet Functions | |||
Would Like to Automate Batch File Creation and Text FIle Import | Excel Discussion (Misc queries) | |||
excel - create a macro to use cell text as part of a file name | New Users to Excel | |||
Get External Data, Import Text File, File name problem | Excel Programming |