Зачем выкладывать лишнее?

Он же привёл уже код макроса - это одна строчка с вызовом метода Replace. См. сообщ. #3. Это все. (Также как и у меня 1 строчка)
Но дело в том, что я тоже на Вашей книге его проверял. Replace даст нестабильный результат, который зависит от версии Excel и, возможно, настроек. Например, мой Excel 2003 после Replace просто пометил все ячейки с дробными числами зелёным маркером и предлагает текст сконвертировать их числа (т.е. "ручками" по одному).
Все дело в типе Variant, который позволяет выделить память для значений различных типов и доступаться к ним ппредварительно проверяя какого они сейчас типа (см функции IsNull, IsEmpty, IsNumber и т.д.). У нас есть строковое Variant значение "123.25". Replace для текстовых значений заменяет в них символы не выполняя попыток приведения типов (что, надо заметить, логично и правильно). В результате получается "123,25".
TextToColumns поступает иначе. Он пытается взять текст "123.25", разделить его на столбцы по табуляциям (в моем примере ниже Tab:=true) (получается 1 столбец, так как табуляция в этом тексте не встречается). А затем пытается привети это к числу (не даром же там есть аргумент DecimalSeparator:="."). Если получается, то значение Variant Number сохраняется в ячейку, если не получается, то получается значание Variant String.