我有一些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需要将变量'Value‘声明为与Unit64等效的VBA,但由于我运行的是32位版本的office,因此遇到了一些麻烦。我尝试声明为Double,但没有返回正确的值。不知道为什么。
如有任何建议,我们将不胜感激
谢谢
发布于 2016-11-12 00:05:48
整数数组可能是最好的选择。
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数组(并从中创建您的数字)。
(嗯,这取决于数字是如何存储的。尝试一下。)
https://stackoverflow.com/questions/40550606
复制相似问题