Проблема, которую вы описываете, связана с тем, что оператор Put в Visual Basic добавляет нулевой байт в конец файла при записи массива, чтобы обозначить его конец. Это поведение по умолчанию для оператора Put в режиме бинарной записи.
Если вы хотите избежать добавления нулевого байта в конец файла, вам нужно использовать другие методы записи, такие как использование функций FilePut или PutObject. Ниже приведен пример использования функции FilePut для записи массива байтов без добавления нулевого байта в конец файла:
Dim arr(10) As Byte
Open strFilePath For Binary Lock Write As #1
FilePut(1, arr)
Close #1
При использовании FilePut нулевой байт не будет добавлен в конец файла, и файл будет содержать только указанные вами 10 байт.