Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: caroso77 en Martes 25 de Septiembre de 2007, 16:25
Título: Imprimir Rango De Excel En Visual Basic 6
Publicado por: caroso77 en Martes 25 de Septiembre de 2007, 16:25
hola a todos :hola: ...el motivo de mi consulta es para saber si alguien tiene una idea o algo de como podría resolver la siguiente cuestión....: :unsure:
tengo un exportar a excel que funciona perfecto...me exporta y selecciona un rango fijo que le doy...y asi me lo imprime perfecto tambien, segun la seleccion...o sea hace lo correcto...el tema es que no siempre tendré esa cantidad de columnas y filas ...hay alguna manera que se les pueda ocurrir para hacer que el rango cambie de acuerdo a la cantidad de columnas que tenga mi flexgrid? que es de donde se exportan los datos al excel...seria un rango dinamico lo que necesito...desde ya muchas gracias a cualquier ayuda o idea que tengan...y sino muchas gracias de igual manera por detenerse a leer este mensaje...saludos cordiales....y ahi les dejo mi codigo del mi funcion exportar excel para que lo vean.
'************************************************************************ 'FUNCION QUE EXPORTA A EXCEL '************************************************************************ Public Function Exportar_Excel(FlexGrid As MSFlexGrid) As Boolean
'si ya se cargo la grilla o no para no exportar vacio If MSFlexGrid1 = "" Then MsgBox " Debe hacer la consulta antes de exportar ", vbInformation, "Atención" Command1.SetFocus Else
On Error GoTo errSub ' si se cancela el exportar o si hay error
'Variable para la aplicación Excel, el libro y la hoja Dim o_Excel As Object
'Para las filas y columnas del FlexGrid y la Hoja Dim Fila As Integer Dim Columna As Integer
Exportar_Excel = False
' crea los objetos y agrega el libro y la hoja Set o_Excel = New EXCEL.Application o_Excel.Visible = True ' hacemos visible el excel automaticamente
o_Excel.Workbooks.Add
o_Excel.Worksheets.Add
'llama a la funcion comprobar para saber si tiene el excel instalado If Comprobar("Excel.Application") = False Then MsgBox " error el excel no se pudo abrir o no existe" Set o_Excel = Nothing
Else ' si esta el excel continua correctamente ' Recorremos el FlexGrid por filas y columnas For Fila = 0 To FlexGrid.Rows - 1
For Columna = 0 To FlexGrid.Cols - 1
' Agrega el Valor en la celda indicada del Excel o_Excel.Cells(Fila + 1, Columna + 1).Value = _ FlexGrid.TextMatrix(Fila, Columna)
Next Columna
Next Fila
'************************************************************************* 'Opcional : colocamos en negrita los enbezados en la hoja o_Excel.Rows(1).Font.Bold = True '...con la negrita ya esta bien
Range("A1:F58").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 With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With ActiveSheet.PageSetup .PrintTitleRows = "$1:$3" .PrintTitleColumns = "" End With ActiveSheet.PageSetup.PrintArea = "$A$1:$L$39" With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .LeftMargin = Application.InchesToPoints(1.18110236220472) .RightMargin = Application.InchesToPoints(0.78740157480315) .TopMargin = Application.InchesToPoints(0.78740157480315) .BottomMargin = Application.InchesToPoints(0.78740157480315) .HeaderMargin = Application.InchesToPoints(0) .FooterMargin = Application.InchesToPoints(0) .PrintHeadings = False .PrintGridlines = False .PrintComments = xlPrintNoComments .PrintQuality = 300 .CenterHorizontally = False .CenterVertically = False .Orientation = xlLandscape .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = 99 End With
' Elimina las instancias If Not o_Excel Is Nothing Then Set o_Excel = Nothing End If
Exportar_Excel = True
'aca cierra el if de COMPROBAR End If End If 'cierra el 1er if Exit Function
'Error errSub:
'Cierra la hoja y la aplicación Excel
If Not o_Excel Is Nothing Then: o_Excel.Quit
'Liberar los objetos Set o_Excel = Nothing
If Err.Number <> 0 Then MsgBox Err.Number & " - " & Err.Description End If
End Function
Título: Re: Imprimir Rango De Excel En Visual Basic 6
Publicado por: F_Tanori en Martes 25 de Septiembre de 2007, 21:33
Donde seleccionas el rango crea el rango
Código: Text
Rango = "A1:" & Chr(64 + FlexGrid.Cols) & FlexGrid.Rows
Range(" & Rango & ").Select
Esa es la idea, es posible que tengas que conciderar la columna 0 y el renglon 0 para lo cual tienes que ser modificaciones para que generes un rango de excel valido y tambien si son demaciadas columnas las letras empiezan otra vez (AA AB AC ...)
Saludos
Título: Re: Imprimir Rango De Excel En Visual Basic 6
Publicado por: caroso77 en Miércoles 26 de Septiembre de 2007, 22:26
muchas gracias Tanori por tu respuesta lo probaré y lo tendré en cuenta!!!...pero te comento que lo resolví de esta manera y me funciona perfecto... :D
saludos cordiales :hola: y gracias por tomarte la amabilidad de responder. lo solucioné asi: :comp:
Fila = FlexGrid.Rows Columna = FlexGrid.Cols
for..... aqui hace el volcado de datos next....
luego al salir: Range(Cells(1,1), Cells(Fila, Columna)).Select