No me veo yo con tu código... Creo que tal como lo tienes diseñado no es la mejor forma para que puedas controlar los encolumnados y la alineación de los datos, sobre todo los numéricos, para que vayan con decimales, a la derecha...
Quizás consigas hacer una alineación adecuada cambiando la línea
Código:
dato = " " & LTrim(dato & registro) & " "
por
Código:
dato = " " & LTrim(dato & registro) & vbTab