Hola gente, encontré un código para poder exportar un Flexgrid a Excel y me funciona perfectamente.
El problema es que me gustaría que quede un poco más atractivo con respecto al nombre de las columnas.
Busqué propiedades para cambiar el formato y esas cosas pero la verdad no encontré nada.
Private Sub GridAExcel()
Dim oExcel As Excel.Application
Dim i As Integer, j As Integer
Screen.MousePointer = vbHourglass
Set oExcel = CreateObject("Excel.Application")
oExcel.Workbooks.Add
With grilla
For i = 0 To .Rows - 1
For j = 0 To .Cols - 1
oExcel.Cells(i + 1, j + 1) = .TextMatrix(i, j)
Next j
Next i
End With
oExcel.Visible = True
Screen.MousePointer = vbDefault
End Sub
Private Sub Command1_Click()
Call GridAExcel
End Sub
Ese es el código que uso y así es como me lo exporta a EXCEL y queda horrible.
(http://web11.twitpic.com/img/30372104-7e83d144798bfb9992e6ab32f0529147.4ab298f3-scaled.jpg)
Lo que me gustaría hacer es centrar todo y ponerle negrita y otro fondo a las columnas.
Espero que me puedan dar una mano.
Muchas gracias!!!
Sobre esa planilla de excel que tienes, Herramientas > Macros > Grabar nueva macro, y realiza los cambios que quieras, bordes, negrita, colores, etc, y al final termina la grabación.
Luego ve al editor de VBA, Herramientas > Macros > Editor de Visual Basic o ALT+F11, en el explorador de proyectos ve al nuevo MÓDULO que se te ha creado, y ya tendrás código de ejemplo bastante acorde a tu caso :D
Saludos
Cita de: Novlucker en 17 Septiembre 2009, 22:25 PM
Sobre esa planilla de excel que tienes, Herramientas > Macros > Grabar nueva macro, y realiza los cambios que quieras, bordes, negrita, colores, etc, y al final termina la grabación.
Luego ve al editor de VBA, Herramientas > Macros > Editor de Visual Basic o ALT+F11, en el explorador de proyectos ve al nuevo MÓDULO que se te ha creado, y ya tendrás código de ejemplo bastante acorde a tu caso :D
Saludos
Gracias por responder Novlucker.
Pero igualmente mucho no me sirvió, hice lo que me dijiste pero había cosas que no encontré. Deben tener otro nombre las propiedades o no sé.
El VBA lo que me formó a mi fue:
Range("A1:J1").Select
Range("J1").Activate
Selection.Font.Bold = True
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("A2:J3").Select
Range("J3").Activate
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("A1:J1").Select
Range("J1").Activate
With Selection.Interior
.ColorIndex = 33
.Pattern = xlSolid
End With
Columns("A:A").ColumnWidth = 4.57
Columns("B:B").ColumnWidth = 15.71
Columns("B:B").ColumnWidth = 18
Columns("C:C").ColumnWidth = 18
Columns("D:D").ColumnWidth = 4.71
Columns("E:E").ColumnWidth = 16.14
Columns("F:F").ColumnWidth = 12.29
Columns("F:F").ColumnWidth = 13
Columns("F:F").ColumnWidth = 13.14
Columns("F:F").ColumnWidth = 13.29
Columns("I:I").ColumnWidth = 12.71
Columns("J:J").ColumnWidth = 23.71
End Sub
y cuando quise hacerlo no encontré en el VB HorizontalAlignment, Font bold, entre otras. Así que no sé como puedo hacerlo.
Por ahi algo entendi mal, pero no creo.
Desde ya muchas gracias!
Gente, pude poner en negrita. Pero más de eso no pude avanzar.
La verdad es rarísimo. No es como los otros componentes que vos agregas y te vas GUIANDO PORQUE EL VB TE VA AYUDANDO A MEDIDA QUE VAS TIPEANDO. En este no te arroja ninguna ayuda y no sabes si lo que escribis está bien o mal :S.
La verdad rarísimo.
El que sepa poner alguna cosa más me avisa por favor.
rivate Sub GridAExcel()
Dim Excel As Excel.Application
Dim i As Integer, j As Integer
Dim Sheet As Object
Dim Book As Object
Screen.MousePointer = vbHourglass
Set Excel = CreateObject("Excel.Application")
Set Book = Excel.Workbooks.Add
Set Sheet = Book.Worksheets(1)
'INSERTA LOS DATOS DE LA GRILLA EN EL EXCEL
With grilla
For i = 0 To .Rows - 1
For j = 0 To .Cols - 1
Excel.Cells(i + 1, j + 1) = .TextMatrix(i, j)
Next j
Next i
'PONE EN NEGRITA
Sheet.Range("A1:J1").Font.Bold = True
End With
Excel.Visible = True
Screen.MousePointer = vbDefault
End Sub
Saludos!
Vuelvo a comentar...
Finalmente pude lograrlo. Costó pero con esfuerzo se pudo.
Parece que hay que aplicarlo de esta manera:
Sheet.Range("A1:J1").Font.Bold = True
Sheet.Range("A1:J1").HorizontalAlignment = xlCenter
Sheet.Range("A1:J1").Interior.ColorIndex = 33
Sheet.Range("A1:J1").Interior.Pattern = xlSolid
Para la parte que sigue después del rango, lo saqué con el código de VBA que obtuve antes.
Pero la verdad que es rarísimo, como dije antes, es la primera vez que me pasa que el VB no me ayuda cuando voy escribiendo el código o poniendo el . (punto) para que me aparezca la propiedad a utilizar.
Les dejo imágen que como va quedando:
(http://web8.twitpic.com/img/30453699-d67485221d1a6e04107201d7018ddaa7.4ab30660-scaled.jpg)
Muchas gracias igualmente.
Cualquier duda, pregunten si no entendieron como usarla.
Justamente iba a poner eso :P ... como lo haces por medio del objeto excel.application los with y selection pueden dar problemas.
Otra cosa que puede dar problemas también son las constantes, como xlcenter, pero poniendo el valor se arregla, en caso de que te ocurra simplemente te vas al editor de VBA nuevamente y con un msgbox consigues el valor ... msgbox xlcenter
Saludos
Cita de: Novlucker en 18 Septiembre 2009, 06:15 AM
Justamente iba a poner eso :P ... como lo haces por medio del objeto excel.application los with y selection pueden dar problemas.
Otra cosa que puede dar problemas también son las constantes, como xlcenter, pero poniendo el valor se arregla, en caso de que te ocurra simplemente te vas al editor de VBA nuevamente y con un msgbox consigues el valor ... msgbox xlcenter
Saludos
Sii, más que nada no sabía que lo tenía que hacer (en mi caso) desde sheet.PROPIEDAD.
Una vez que encontré eso, descubrí todo ^^.
Saludos y gracias Novlucker
No se si lo has terminado, pero sugerencia para la próxima ...
CitarNo es como los otros componentes que vos agregas y te vas GUIANDO PORQUE EL VB TE VA AYUDANDO A MEDIDA QUE VAS TIPEANDO. En este no te arroja ninguna ayuda y no sabes si lo que escribis está bien o mal :S.
Para evitar esto ... programa lo que se refiere a la apariencia y demás directamente desde el editor de VBA, luego es cuestión de copiar y pegar ;)
(http://s4.subirimagenes.com/imagen/3227424excel.png)
Antes había olvidado comentarlo :-X
Saludos