У меня есть некоторые 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’ должна быть объявлена как VBA, эквивалентная Unit64, но, поскольку я использую 32-разрядную версию Office, я немного застрял. Я попытался объявить Double, но это не вернуло правильное значение. Не уверен почему.
Любые советы будут высоко ценится
Спасибо
Массив целых чисел, вероятно, будет лучшим вариантом.
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
так что вы, вероятно, будете счастливее с байтовым массивом (и создадите из него свой номер).
(Ну, зависит от того, как хранится число. Попробуйте.)
Других решений пока нет …