Se desea generar documentos excel con mayores detalles de look y funcionalidad desde Genexus.
Algunos de los requerimientos son: colorear celdas, definir bordes de las celdas, insertar filas, insertar fórmulas....
Dado que las funciones propias de Genexus no lo permiten, una alternativa para lograrlo, es incluir macros que realicen las funciones deseadas e invocarlas pasándo los parámetros necesarios, ej:
&ExcelDocument.RunMacro( 'InsertarFila',2 )
&ExcelDocument.RunMacro( 'ColoresCelda',2,5,2 )
Etc...
Este es el código fuente del modulo Visual Basic del archivo excel del cual se invocarán las macros.
Sub InsertarFila(Fila As Integer)
Row = Trim(Str(Fila)) + ":" + Trim(Str(Fila))
Rows(Row).Select
Selection.Insert Shift:=xlDown, copyOrigin:=xlFormatFromRightOrBelow
End Sub
Sub ColoresCelda(RangoCeldas As String, ColorFondo As Integer, ColorTexto As Integer)
' FormatoCelda Macro
'Selecciono Celda
Range(RangoCeldas).Select
'Color Fondo
With Selection.Interior
.ColorIndex = ColorFondo
.Pattern = xlSolid
End With
'Color Texto
Selection.Font.ColorIndex = ColorTexto
End Sub
Sub BordesCelda(RangoCeldas As String, TipoBorde As Integer)
If TipoBorde = 0 Then
'Bordes transparentes
Range(RangoCeldas).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
End If
If TipoBorde = 1 Then
'Bordes linea Fina
Range(RangoCeldas).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End If
If TipoBorde = 2 Then
'Bordes linea gruesa
Range(RangoCeldas).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End If
End Sub
Sub BorrarFila(Fila As Integer)
Row = Trim(Str(Fila)) + ":" + Trim(Str(Fila))
Rows(Row).Select
Selection.Delete
End Sub
Servicios Profesionales (consultoras que apoyan el proyecto Mundo Support GX) |
Para informarse sobre las soluciones y servicios en: Click Aquí o escriba a mundosupport@gmail.com. |
||||||||||
![]() |
![]() |
![]() |
![]() |
![]() |
Bienvenido a Mundo Support
Como usuario visitante podrás consultar libremente los artículos y comentarios publicados; además de escribir comentarios que aporten y enriquezcan a los artículos.
Si deseas redactar artículos, entradas o consultas te invitamos a que nos escribas a mundosupport@gmail.com y recibirás un correo invitándote a ser redactor contribuyente.
Gracias y esperamos contribuir en tu camino por el mundo Genexus y la programación.
lunes, 6 de octubre de 2008
XLS.Varios - Ampliar funciones en creación de documentos excel
Publicado por
.
en
lunes, octubre 06, 2008
0
comentarios
Etiquetas: exceldocument, fórmulas, xls
XLS.Varios - Insertar fórmula en una celda al generar archivo excel
Para insertar un fórmula en una celda de un archivo excel generado con Genexus utilizar la siguiente sentencia:
&ExcelDocument.Cells(1,5).Text = '=IF(C1>10,1,2)'
Criterio:
- Poner la instrucción en Inglés.
- Poner comas en lugar de punto y comas para separar.
Publicado por
.
en
lunes, octubre 06, 2008
2
comentarios
Etiquetas: excel, insertar fórmula, xls