Запись файла 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)

Другие вопросы по тегам