I have a binary file that resulted from a program written in Compaq Visual Fortran. How can I read specific lines and save them in an Excel sheet?
3 Answers
If you want to read the entire file into one big array, you can use the following code:
Dim byteArr() As Byte
Dim fileInt As Integer: fileInt = FreeFile
Open "C:\path\to\my\file.ext" For Binary Access Read As #fileInt
ReDim byteArr(0 To LOF(fileInt) - 1)
Get #fileInt, , byteArr
Close #fileInt
The result is identical to the answer by Todd Owen, but achieved without the use of external libraries.
Comments
Another way is using ADODB.Stream:
With CreateObject("ADODB.Stream")
.Open
.Type = 1 ' adTypeBinary
.LoadFromFile file.Path
bytes = .Read
.Close
End With
(Sorry, I'm not actually sure what library it's in, which is why this sample code uses CreateObject and the literal value 1 instead of the named constant adTypeBinary!)
4 Comments
S Meaden
The library is Microsoft Active Data Object.
jumpjack
why using an external library for such a trivial and built-in task?
Noam Brand
Refrence Microsoft ActiveX Data Objects x.x Library
Noam Brand
Dim bytes As Variant
You have to open it using "Binary Access".
See http://www.vbforums.com/showthread.php?t=430424
Sub Temp()
Dim intFileNum%, bytTemp As Byte, intCellRow%
intFileNum = FreeFile
intCellRow = 0
Open "C:\temp.bin" For Binary Access Read As intFileNum
Do While Not EOF(intFileNum)
intCellRow = intCellRow + 1
Get intFileNum, , bytTemp
Cells(intCellRow, 1) = bytTemp
Loop
Close intFileNum
End Sub