Colocar decimales a dato numérico para generar archivo plano txt
Para Dante Amor:
Cordial saludo, tengo un archivo que contiene una macro para generar un archivo plano para importar información a otros sistema, el archivo plano se genera a partir de información ingresada en la "Hoja1" con nombre FIBATCH, tengo dificultad con las cifras numéricas, ya que según la estructura del plano, estas deben de contener 2 decimales y un signo + o -, (la estructura está definida en las filas 1 a 10), para solucionar el tema de los decimales he agregado al código "00", que me funciona perfectamente cuando las cifras no tienen decimales, pero cuando estas tienen decimales, me los toma como enteros alterando por lo tanto el valor real de las cifras; lo que necesito es que si la cifra no tiene decimales, me le agregue "00", pero si la cifra tiene decimales, entonces me reemplace el "00", por los 2 decimales que debe contener la cifra.
Espero haberme hecho entender con la exposisión de mi necesidad.
Adjunto imagen de la hoja FIBACTCH y el código que estoy utilizando
Como ejemplo se puede tomar la columna S que en el código corresponde a C18, no pude ingresar el 100% del código

Sub GenerarPlano()
Dim i As Double
Dim ruta As String
ruta = ThisWorkbook.Sheets("Datos").Range("A1")
nombre = "FIBATCH.DAT"
Set p = Sheets("FIBATCH")
myfile = ruta & nombre
p.Select
'Ancho de campos
Col1 = p.Range("B5")
Col2 = p.Range("C5")
Col3 = p.Range("D5")
Col4 = p.Range("E5")
Col5 = p.Range("F5")
Col6 = p.Range("G5")
Col7 = p.Range("H5")
Col8 = p.Range("I5")
Col9 = p.Range("J5")
Col10 = p.Range("K5")
Col11 = p.Range("L5")
Col12 = p.Range("M5")
Col13 = p.Range("N5")
Col14 = p.Range("O5")
Col15 = p.Range("P5")
Col16 = p.Range("Q5")
Col17 = p.Range("R5")
Col18 = p.Range("S5")
Col19 = p.Range("T5")
'caracter para completar el campo
cero = "0"
esp = " "
s = "+"
uf = p.Range("B" & Rows.Count).End(xlUp).Row
Open myfile For Output As #1
For i = 11 To uf
C1 = String(Col1 - Len(Cells(i, 2)), cero) & Cells(i, 2)
C2 = String(Col2 - Len(Cells(i, 3)), cero) & Cells(i, 3)
C3 = String(Col3 - Len(Cells(i, 4)), cero) & Cells(i, 4)
C4 = Cells(i, 5) & String(Col4 - Len(Cells(i, 5)), esp) 'Texto
C5 = String(Col5 - Len(Cells(i, 6)), cero) & Cells(i, 6)
C6 = String(Col6 - Len(Cells(i, 7)), cero) & Cells(i, 7)
C7 = Cells(i, 8) & String(Col7 - Len(Cells(i, 8)), esp) 'Texto
C8 = String(Col8 - Len(Cells(i, 9)), cero) & Cells(i, 9)
C9 = String(Col9 - Len(Cells(i, 10)), cero) & Cells(i, 10)
C10 = String(Col10 - Len(Cells(i, 11)), cero) & Cells(i, 11) & "00" & s
C11 = String(Col11 - Len(Cells(i, 12)), cero) & Cells(i, 12)
C12 = String(Col12 - Len(Cells(i, 13)), cero) & Cells(i, 13)
C13 = Cells(i, 14) & String(Col13 - Len(Cells(i, 14)), esp) 'Texto
C14 = String(Col14 - Len(Cells(i, 15)), cero) & Cells(i, 15)
C15 = Cells(i, 16) & String(Col15 - Len(Cells(i, 16)), esp) 'Texto
C16 = Cells(i, 17) & String(Col16 - Len(Cells(i, 17)), esp) 'Texto
C17 = String(Col17 - Len(Cells(i, 18)), cero) & Cells(i, 18)
C18 = String(Col18 - Len(Cells(i, 19)), cero) & Cells(i, 19) & "00" & s
C19 = String(Col19 - Len(Cells(i, 20)), cero) & Cells(i, 20) & "000"
'Lllenar el txt
Print #1, C1 & C2 & C3 & C4 & C5 & C6 & C7 & C8 & C9 & C10 & C11 & C12 _
& C13 & C14 & C15 & C16 & C17 & C18 & C19 & C20 & C21 & C22 & C23 & C24 _
& C25 & C26 & C27 & C28 & C29 & C30 & C31 & C32 & C33 & C34 & C35 & C36 _
& C37 & C38 & C39 & C40 & C41 & C42 & C43 & C44 & C45 & C46 & C47 & C48 _
& C49 & C50 & C51
Next i
'Cerrar el archivo
Close
End Sub
