Nick
Nick

Reputation:

how can I read a binary file using VBA?

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?

Upvotes: 8

Views: 56042

Answers (3)

Erik A
Erik A

Reputation: 32642

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.

Upvotes: 14

Todd Owen
Todd Owen

Reputation: 16208

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!)

Upvotes: 8

Curtis Inderwiesche
Curtis Inderwiesche

Reputation: 4980

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

Upvotes: 7

Related Questions