View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
RWN RWN is offline
external usenet poster
 
Posts: 104
Default Still stuck with importing a delimitted file.

Tino;
Dimension your input fields as string.
By not dimensioning them basic assumes that the variables are
"Variants", which means it will decide what format they are.
Thus, when it sees the "1 0" it assumes that it is a numeric (it thinks
the blank is the sign byte).
Here's what I did, using your file.

Dim F1 As String
Dim F2 As String

Sub Testit()
Open "C:\xfer\tino.txt" For Input As #1
Do Until EOF(1)
Input #1, F1, F2
mysecondfield = (Int(Val(F2) * 100)) / 100 *** Told basic that I wanted
it to treat the string "F2" as a numeric value.

Debug.Print F1, F2, mysecondfield
Loop
Close #1

End Sub

And here's what I got

F1 ...............F2..............mysecondfield
abc 123 123.4 123.4
1 0 002 900.23231 900.23
1 0 003 31.12 31.12


--
Regards;
Rob
------------------------------------------------------------------------
wrote in message
...
Three example lines of my csv file are..

abc 123,123.4
1 0 002,900.23231
1 0 003,31.12

And it appears to recognise the spaces in the lines as delimeters as
well as the commas.

The purpose of my code is to open a text file and round values in the
second field of each line and the full code is as follows:

mycount = 1
Do While Range("a" & mycount) < ""

a = "c:\web\" & Range("a" & mycount) & ".csv"
b = "c:\web\" & Range("a" & mycount) & ".txt"
Open a For Input As #1
Open b For Output As #2

b = LCase(b)

Do Until EOF(1)
Input #1, myfirstfield, mysecondfield
mysecondfield = (Int(mysecondfield * 100)) / 100
Print #2, myfirstfield & "," & mysecondfield
Loop
Close
mycount = mycount + 1

Loop


Thanks again.

On Wed, 7 Jan 2004 23:04:25 -0600, "RWN" wrote:

Hmmm. Work fine here.
File;
123,456
789,012
"ROB,RWN","Test it"

Dim F1 as String
Dim F2 as String

Sub Testit()
Open "C:\xfer\test.csv" For Input As #1
Do Until EOF(1)
Input #1, F1, F2
Debug.Print F1, F2
Loop
Close #1
End Sub

Out
123 456
789 012
ROB,RWN Test it

Perhaps I'm missing something as to what your file looks like?

--
Regards;
Rob


-----------------------------------------------------------------------

-
wrote in message
...
Oops... It's not actually working quite right as it's not using

comma
as a delimeter. Some of the values in my first field have spaces

and
it appears to be picking up those as delimeters too.
'
Any ideas on how to resolve this?

Thanks

On Thu, 08 Jan 2004 03:34:58 GMT, )

wrote:

Thanks Rob!

On Wed, 7 Jan 2004 21:35:26 -0600, "RWN"

wrote:

Try this

Open "c:\myfile.csv" for Input as #1
Do until EOF(1)
Input #1,myfirstfield,mysecondfield
Loop

Close #1

--
Regards;
Rob


---------------------------------------------------------------------

-
--
wrote in message
...
Hi,

I do a lot of creating text files from Excel workbooks using

"Open
blahblah for output as #1" and then printing to that file with

"Print
#1, "etc"..

I now need to do some input from text files and don't know the

syntax
& can't find it in HELP.

Specifically, I have a comma separated text file with an

undefined
number of rows but always two fields.

What code would I need to achieve the following..

-Open a text file for reading
-Start a loop that will check line after line until the end of

the
file
-Take both fields of a line of data (comma separated) and put

each

field in a separate variable
-end the loop

I expect it would be something like this...(and I do know this

does
nothing at the moment. I will be doing further manipulation of

the
variables & dumping to another file later).

Open "c:\myfile.csv" for input as #1
Do while not EOF(myfile.csv)
read myfirstfield,mysecondfield
loop


Any help would be much appreciated.

Thanks.