Eu passei pelo seu código e parece que o culpado é Chr(42) , que corresponde ao símbolo * . Quando o Excel encontra isso, está tratando isso como um curinga e substituindo todo o texto. Se você adicionar uma instrução if simples para pular 42, ela passará pelo primeiro loop For sem causar os problemas observados. Você precisará fazer isso novamente para Chr(63) (o ? ) ou ele retornará uma saída estranha novamente. Uma vez que ambos são contabilizados, funcionou muito bem para mim.