Reading from a file

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

Hello,

I have a little routine that saves data from a spreadsheet to a data file.
What I want to do now is load that data back into the spreadsheet.

After Opening the file how would I go about reading each line into a
variable line by line?

Thanks,
Ernst.
 
Why not do it all in one shot? For example, something like:

Dim vTest As Variant, vTest2 As Variant ' Arrays
to save spreadsheet data
vTest = ActiveSheet.Range("E3:F5") ' Loads
spreadsheet data into array
'-------------------------------------------------------* Writes
entire array to file
Open "VBA-Test-Array.txt" For Binary As #1
Put #1, , vTest
Close
'-------------------------------------------------------* Reads
entire array from file
Open "VBA-Test-Array.txt" For Binary As #1
Get #1, , vTest2
Close
 
ok... My data file is text based for starters... This might matter... Also
Excel generated an error "Variable uses an automation type not supported in
Visual Basic"

Not sure... This is what I tried:

Dim strFileName As String
Dim vtest As Variant

strFileName = "C:\MenuItem.Dat"

Open strFileName For Binary As #1 ' Open file for input
Get #1, , vtest
Range("dump") = vtest
Close #1
 
This worked fine for me when I added it to the code I sent previously:

Range("A1:B3") = vTest2

Was your "Dump" range the same dimensions (rows x columns) of what you
saved into the file, as well as your vTest array?

If the data was previously saved in a different matter, this method
won't work. You method of reading will need to be similar to your
method of writing.
 
This is what I have to write the data...

Sub MenuItem()

Dim c As Range
Dim strTemp As String
Dim strFileName As String

strFileName = "C:\MenuItem.Dat"
Open strFileName For Output As #1 ' Open file for output.

For Each c In Range("ItemRange")

strTemp = c.Cells(1, 6).Value
If c.Cells(1, 6).Value = "" Then GoTo NextItem
Print #1, strTemp

NextItem:

Next

Close #1 ' Close file.
End Sub

and an the data file looks like this:

000Whop Jr. Whop Jr 000010000000001100000010101
001Whop Jr./Chz Whop Jr/C000011900000001100000010101
003Whopper Whopper 000029900000001100000010101
004Whopper/Chz Whopper/C000033900000001100000010101

I cannot load the data as binary because it was not writen that way. Nor
can I write it at binary because the POS system that uses the file needs it
in a text format...

I actually don't want to dump the array to a range. I would prefer to step
through it and write it each line at a time... I can handle this... I
cannot figure out how to load the array...

Thanks,
Ernst.
 
Something like this should work:

Dim strTemp As String
Dim strFileName As String
strFileName = "C:\MenuItem.Dat"
Open strFileName For Input As #1 ' Open file for output.
Do While Not EOF(1) ' Loop until end of file.
Line Input #1, strTemp ' Read line into variable.
Debug.Print strTemp ' Print to the Immediate window.
Loop
Close #1

Just replace the "Debug.Print" line with whatever you want to do with
the line of data that was read from the file.
 
Works great... thanks for the help...

Ernst.


Randy Harmelink said:
Something like this should work:

Dim strTemp As String
Dim strFileName As String
strFileName = "C:\MenuItem.Dat"
Open strFileName For Input As #1 ' Open file for output.
Do While Not EOF(1) ' Loop until end of file.
Line Input #1, strTemp ' Read line into variable.
Debug.Print strTemp ' Print to the Immediate window.
Loop
Close #1

Just replace the "Debug.Print" line with whatever you want to do with
the line of data that was read from the file.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top