Visual Basic - Dar formato personalizado a columna/celda desde visual basic

Life is soft - evento anual de software empresarial
   
Vista:

Dar formato personalizado a columna/celda desde visual basic

Publicado por Marco Muñoz Marcomunoz.ing3@gmail.com (2 intervenciones) el 27/03/2017 07:25:25
Hola y muy buen día,

Estoy creando un generador de layouts en .txt desde excel y de echo va bastante bien
solo que al momento de enviar la información al txt esta debe de ir con un formato personalizado

por ejemplo:
Numero de cliente con cuatro caracteres: 0001 (se rellenan los caracteres restantes con ceros a la izq)
Nombre de cliente con 10 caracteres: tony (se rellenan con espacios a la derecha)



El punto es que cuando le doy formato personalizado a las columnas las cifras aparecen en las celdas como se configuro pero al correr la macro para generar el layout el resultado en el .txt no aparece con el formato configurado en las columnas,

he intentado hacerlo directo en el código sin éxito y como soy nuevo en este lenguaje quisiera solicitar ayuda, les dejo el
proyecto y el código que genera el layout .txt sin ningún formato.

gracias adelantadas desde ya!
-saludos.
-------------------------------------------------------------------------------------------------------------------------------------------------------
Private Sub Generar_Click()
Ruta = "C:\Users\mmuoz002\Downloads\Proyecto Layout banamex\LayoutsGenerados\New_layout.txt"

Header = 2
Body = 800





Open Ruta For Output As #1



For i = 2 To Header
Print #1, Cells(i, 1).Value & Cells(i, 2).Value & Cells(i, 3).Value & Cells(i, 4).Value & Cells(i, 5).Value & Cells(i, 6).Value & Cells(i, 7).Value


Next i




For i = 4 To Body
Print #1, Cells(i, 1).Value & Cells(i, 2).Value & Cells(i, 3).Value & Cells(i, 4).Value & Cells(i, 5).Value & Cells(i, 6).Value & Cells(i, 7).Value & Cells(i, 8).Value & Cells(i, 9).Value & Cells(i, 10).Value & Cells(i, 11).Value & Cells(i, 12).Value & Cells(i, 13).Value & Cells(i, 14).Value & Cells(i, 15).Value & Cells(i, 16).Value & Cells(i, 17).Value & Cells(i, 18).Value & Cells(i, 19).Value & Cells(i, 20).Value & Cells(i, 21).Value

Next i


Close #1

End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Andres Leonardo

Dar formato personalizado a columna/celda desde visual basic

Publicado por Andres Leonardo (1284 intervenciones) el 27/03/2017 22:08:54
Hola
alguna vez hice esto y lo importante es tener los datos en una hoja
El formateo en otra y esa le haces el layout con la macro ... te mando un ejemplo tu terminalo


Deberias hacer es utilizar texto he creado una Hoja adicional Ingreso de datos .... y a su vez hice que lee los datos de tu hoja Generarloout con formaot

Esos para los numericos donde 1 debe ser 0001 en las filas 3 y 4 te puse el caracter y numero de veces a repetir o completar.
adicional deje parametrizados caractres y cantidades, pero deberas ser cuidadoso con los nombres

para eso puedes usar concatenar , repetir y largo ... como te pongo en las dos celdas de nombrs

Espero te sirva a esta hoja correle el macro y deberia funcionar.




GeneradorLayouts
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Dar formato personalizado a columna/celda desde visual basic

Publicado por Marco antonio (2 intervenciones) el 02/04/2017 23:19:55
Hola y muchas gracias por la pronta respuesta Andres,

Tu idea me ayudo mucho al final lo resolví con un ciclo while directamente con código desde VB
con el que agrego espacios hasta cumplirse la cantidad de caracteres requeridos por el formato
leyendo los caracteres ingresados, restándoselos a los requeridos y agregando los faltantes.

Les dejo el pedazo de código por si alguien llega a requerir algo por el estilo y te reitero mis gracias Andres !!!


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
'------Variables---------------------------------------------------------------------------------------------------------------------------------
 
cont = 2
blank = 0
sum = 0
'---------------------------------------------------------------------------------------------------------------------------------------------------
 sum = Len(Range("E" & cont).Value)
    blank = 36 - sum
 
    While blank <> 0
        Range("E" & cont).Value = Range("E" & cont).Value + " "
        blank = blank - 1
    Wend
 
'---------------------------------------------------------------------------------------------------------------------------------------------------

-Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad