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