2

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 バイトが上書きされるためです。

4

1 に答える 1

1

上記のCor_Blimeyが述べたように:

...255 は整数で、VBA では 16 ビット、つまり 2 バイトです。試すPut #nFileNum, 100, CByte(255)

于 2015-08-05T19:07:26.433 に答える