Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 135
Default import part of a text file

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   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 73
Default import part of a text file

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   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 135
Default import part of a text file

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
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Can I import text file of cash flow to excel file then use formula Bumpa Excel Discussion (Misc queries) 2 May 28th 10 04:22 PM
Set Defaults in File Import of a Text File Dkline Excel Worksheet Functions 2 January 28th 08 06:20 PM
Would Like to Automate Batch File Creation and Text FIle Import socrtwo Excel Discussion (Misc queries) 2 August 18th 06 03:54 PM
excel - create a macro to use cell text as part of a file name bossman tv New Users to Excel 1 June 27th 06 10:38 PM
Get External Data, Import Text File, File name problem Scott Riddle Excel Programming 1 July 11th 03 05:40 PM


All times are GMT +1. The time now is 11:47 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"