ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Reading from a file (https://www.excelbanter.com/excel-programming/385734-reading-file.html)

Ernst Guckel[_4_]

Reading from a file
 
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.


Randy Harmelink

Reading from a file
 
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

On Mar 20, 2:02 pm, Ernst Guckel
wrote:

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?



Ernst Guckel[_4_]

Reading from a file
 
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


"Randy Harmelink" wrote:

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

On Mar 20, 2:02 pm, Ernst Guckel
wrote:

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?




Randy Harmelink

Reading from a file
 
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.

On Mar 20, 8:19 pm, Ernst Guckel
wrote:
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



Ernst Guckel[_4_]

Reading from a file
 
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.



Randy Harmelink

Reading from a file
 
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.

On Mar 21, 5:58 am, Ernst Guckel
wrote:
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...




Ernst Guckel[_4_]

Reading from a file
 
Works great... thanks for the help...

Ernst.


"Randy Harmelink" wrote:

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.

On Mar 21, 5:58 am, Ernst Guckel
wrote:
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...






All times are GMT +1. The time now is 05:57 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com