Запись файла VBA в двоичном режиме (при перезаписи данного байта неожиданно изменяется следующий, устанавливая его значение в 0)
Я хочу изменить часть .bmp
файл, использующий VBA, все отлично работает, за исключением того, что, когда я перезаписываю выбранный байт, следующий байт устанавливается на ноль. Мой макрос:
Sub WriteBinaryFile()
Dim i As Integer
Dim nFileNum As Integer
Dim sFilename As String
sFilename = "C:\Users\Piotr\Desktop\test1.bmp"
' Get an available file number from the system
nFileNum = FreeFile
' Open the file in binary mode. Locks are optional
Open sFilename For Binary Lock Read Write As #nFileNum
' Put the data in the file
' Below code should write 255 value to byte number 100
' but it writes also 0 value to byte number 101
Put #nFileNum, 100, 255
Close #nFileNum
End Sub
Почему, когда я изменяю байт с номером 100, значение байта с номером 101 устанавливается на 00? Как это изменить и почему это происходит?
Редактировать, как указано в Cor_Blimey, с помощью функции преобразования CByte(255) решает проблему, потому что 255
в VBA - целое число, то есть 16-битное число, поэтому при помещении его в файл записываются два байта
1 ответ
Как сказано выше Cor_Blimey:
... 255 - это целое число, которое является 16-разрядным, то есть 2-байтовым в VBA. Пытаться
Put #nFileNum, 100, CByte(255)