如何使用VBA读取二进制文件?

时间:2009-03-18 22:11:07

标签: vba binary

我有一个由Compaq Visual Fortran编写的程序产生的二进制文件。 如何读取特定行并将其保存在Excel工作表中?

3 个答案:

答案 0 :(得分:6)

您必须使用“二进制访问”打开它。

请参阅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

答案 1 :(得分:5)

另一种方法是使用ADODB.Stream:

With CreateObject("ADODB.Stream")
    .Open
    .Type = 1  ' adTypeBinary
    .LoadFromFile file.Path
    bytes = .Read
    .Close
End With

(对不起,我真的不确定它是什么库,这就是为什么这个示例代码使用CreateObject和文字值1而不是命名常量adTypeBinary!)

答案 2 :(得分:3)

如果要将整个文件读入一个大数组,可以使用以下代码:

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

结果与Todd Owen的答案相同,但没有使用外部库就实现了。