Exportar a EXCEL

Iniciado por ka0s, 17 Septiembre 2009, 22:16 PM

0 Miembros y 1 Visitante están viendo este tema.

ka0s

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.

Código (vb) [Seleccionar]
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.



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!!!

Novlucker

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
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

ka0s

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!

ka0s

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.

Código (vb) [Seleccionar]
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!

ka0s

#4
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:



Muchas gracias igualmente.

Cualquier duda, pregunten si no entendieron como usarla.

Novlucker

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
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

ka0s

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

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 ;)


Antes había olvidado comentarlo :-X

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein