• Viernes 8 de Noviembre de 2024, 16:00

Autor Tema:  Imprimir Rango De Excel En Visual Basic 6  (Leído 4218 veces)

caroso77

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Imprimir Rango De Excel En Visual Basic 6
« en: Martes 25 de Septiembre de 2007, 16:25 »
0
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

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Imprimir Rango De Excel En Visual Basic 6
« Respuesta #1 en: Martes 25 de Septiembre de 2007, 21:33 »
0
Donde seleccionas el rango crea el rango

Código: Text
  1.  
  2. Rango = &#34;A1:&#34; & Chr(64 + FlexGrid.Cols) & FlexGrid.Rows
  3. Range(&#34; & Rango & &#34;).Select
  4.  
  5.  
  6.  


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
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

caroso77

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Imprimir Rango De Excel En Visual Basic 6
« Respuesta #2 en: Miércoles 26 de Septiembre de 2007, 22:26 »
0
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