H o l a:
El detalle es que no tienes un formato de número en tus rangos.
Lo que tu tienes en tu celda es esto:
0
Y quieres que se vea en el archivo así:
0.00
O tienes en la celda esto:
.8
Y quieres que en el archivo se vea así:
0.80
Podemos generalizar y rellenar con 4 decimales todo, para que se vea así:
0.0000
0.8000
Después de todo, después del punto, los ceros a la derecha no cuentan.
Con la siguiente macro
Sub GenerarTxt()
'Por.Dante Amor
ruta = ThisWorkbook.Path & "\"
rangos = Array("A1:B12", "C24:D32")
For r = LBound(rangos) To UBound(rangos)
FileNum = FreeFile()
Open ruta & "archivo " & r + 1 & ".txt" For Output As #FileNum
Set rango = Range(rangos(r))
numcol = rango.Columns.Count
'
For Each fila In rango.Rows
n = 1
For Each columna In fila.Columns
dato = Format(Cells(fila.Row, columna.Column), "#0.0000")
Print #FileNum, dato;
If n < numcol Then Print #FileNum, " ";
n = n + 1
Next
Print #FileNum,
Next
Close #FileNum
Next
'
MsgBox "Archivos txt generados", vbInformation, "GENERAR TXT"
End Sub
El resultado se vería así:
En la imagen puedes apreciar, en realidad en la celda tienes un 0 y la macro lo está formateando a 0.0000, lo mismo hace con el 0.4, en el archivo lo pone como 0.4000
Si quieres más decimales o menos decimales, cambia el número de ceros en la macro en esta instrucción:
dato = Format(Cells(fila.Row, columna.Column), "#0.0000")
Sal u dos