我有一些vba编码用于以二进制模式打开文件并将值存储到vriable以供后续使用。我有关于文件结构的信息(我认为文件是用C或C ++开发的程序创建的)所以知道文件中位置的偏移量,并且它的数据类型是Uint64(所以8字节)。
此代码段如下:
Dim strFile as String
Dim p as Long
strFile = "Testfile"
Open strFile For Binary As #1 ' Open file.
p = 1024 ' position of variable in file
Get 1, p, Value
变量'值'需要声明为等同于Unit64的VBA,但由于我运行的是32位版本的办公室,我有点卡住了。我尝试声明为Double但这并没有返回正确的值。不知道为什么。
非常感谢任何建议
谢谢
答案 0 :(得分:0)
整数数组可能是最好的选择。
Sub TestGetBin()
Dim DataByte(0 To 7) As Byte
Dim DataLong(0 To 1) As Long
Dim i As Long
' File contains "abcdefghijklmnopq"
Open "D:\abc.txt" For Binary As #1
Get 1, 1, DataByte
Get 1, 1, DataLong
Debug.Print Hex(DataLong(0)), Hex(DataLong(1))
For i = 0 To 7
Debug.Print Hex(DataByte(i))
Next i
Close #1
End Sub
这会产生
64636261 68676665
61
62
63
64
65
66
67
68
所以你可能会对Byte数组更开心(并从中创建你的数字) (好吧,取决于号码的存储方式。尝试一下。)