【发布时间】:2009-03-18 22:11:06
【问题描述】:
我有一个由 Compaq Visual Fortran 编写的程序生成的二进制文件。 如何读取特定行并将它们保存在 Excel 工作表中?
【问题讨论】:
-
二进制文件怎么有“行”?
我有一个由 Compaq Visual Fortran 编写的程序生成的二进制文件。 如何读取特定行并将它们保存在 Excel 工作表中?
【问题讨论】:
如果要将整个文件读入一个大数组,可以使用以下代码:
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 的答案相同,但没有使用外部库。
【讨论】:
您必须使用“二进制访问”打开它。
见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
【讨论】:
另一种方法是使用 ADODB.Stream:
With CreateObject("ADODB.Stream")
.Open
.Type = 1 ' adTypeBinary
.LoadFromFile file.Path
bytes = .Read
.Close
End With
(抱歉,我实际上并不确定它在哪个库中,这就是为什么此示例代码使用 CreateObject 和字面值 1 而不是命名常量 adTypeBinary!)
【讨论】: