Kan tänka mig att ditt problem beror på att du försöker skriva ner en variant. Om du dekalarerar den som byte så borde det gå bättre:
Dim bReplace As Byte, lFree As Long
lFree = FreeFile
bReplace = Asc("G")
Open "Filnamnet" For Binary As #lFree
Seek #lFree, 4
Put #lFree, , bReplace
Close #lFree
Ett annat tips: Använd aldrig explicita filnummer. Om du låter Windows sköta det via FreeFile så slipper du alla problem.