Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: ka0s en 17 Septiembre 2009, 22:16 pm



Título: Exportar a EXCEL
Publicado por: ka0s en 17 Septiembre 2009, 22:16 pm
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
  1. Private Sub GridAExcel()
  2. Dim oExcel As Excel.Application
  3. Dim i As Integer, j As Integer
  4. Screen.MousePointer = vbHourglass
  5.  
  6. Set oExcel = CreateObject("Excel.Application")
  7. oExcel.Workbooks.Add
  8. With grilla
  9.    For i = 0 To .Rows - 1
  10.        For j = 0 To .Cols - 1
  11.            oExcel.Cells(i + 1, j + 1) = .TextMatrix(i, j)
  12.        Next j
  13.    Next i
  14. End With
  15. oExcel.Visible = True
  16. Screen.MousePointer = vbDefault
  17. End Sub
  18.  
  19. Private Sub Command1_Click()
  20. Call GridAExcel
  21. 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!!!


Título: Re: Exportar a EXCEL
Publicado por: 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


Título: Re: Exportar a EXCEL
Publicado por: ka0s en 18 Septiembre 2009, 00:33 am
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:

Código:
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!


Título: Re: Exportar a EXCEL
Publicado por: ka0s en 18 Septiembre 2009, 05:50 am
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
  1. rivate Sub GridAExcel()
  2. Dim Excel As Excel.Application
  3. Dim i As Integer, j As Integer
  4. Dim Sheet As Object
  5. Dim Book As Object
  6. Screen.MousePointer = vbHourglass
  7.  
  8. Set Excel = CreateObject("Excel.Application")
  9. Set Book = Excel.Workbooks.Add
  10. Set Sheet = Book.Worksheets(1)
  11.  
  12. 'INSERTA LOS DATOS DE LA GRILLA EN EL EXCEL
  13. With grilla
  14.    For i = 0 To .Rows - 1
  15.        For j = 0 To .Cols - 1
  16.            Excel.Cells(i + 1, j + 1) = .TextMatrix(i, j)
  17.        Next j
  18.    Next i
  19. 'PONE EN NEGRITA
  20. Sheet.Range("A1:J1").Font.Bold = True
  21.  
  22. End With
  23.  
  24. Excel.Visible = True
  25. Screen.MousePointer = vbDefault
  26. End Sub
  27.  

Saludos!


Título: Re: Exportar a EXCEL
Publicado por: ka0s en 18 Septiembre 2009, 06:03 am
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.


Título: Re: Exportar a EXCEL
Publicado por: 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


Título: Re: Exportar a EXCEL
Publicado por: ka0s en 18 Septiembre 2009, 15:34 pm
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


Título: Re: Exportar a EXCEL
Publicado por: Novlucker en 18 Septiembre 2009, 15:42 pm
No se si lo has terminado, pero sugerencia para la próxima ...
Citar
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.

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