VBAを使用してファイルの一部を変更したいのですが.bmp
、選択したバイトを上書きすると、次のバイトがゼロに設定されることを除いて、すべてうまくいきます。私のマクロは次のとおりです。
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 ビットの数値であるため、ファイルに入れると 2 バイトが上書きされるためです。