canal visual basic .net

Recursos Visual Basic.NET, VB.NET, Manuales de programación, Tutoriales, Foros de programación, Comunidad de programadores

Usuarios activos:  134

Foros de programación, recursos, tutoriales, sistemas operativos...

Bienvenido a la zona de foros. Participa en alguno de nuestros foros: Foros de visual basic, foros de visual basic.net foros de Crystal reports, foros de C++ - C# , foros de Java, foros de PHP, foros de ASP.net. Seguro que hay un foro que te servirá de gran utilidad y si no lo encuentras avísanos y crearemos uno nuevo.
 

Retroceder   Foro > Canal Visual Basic > Visual Basic 6.0
 
LinkBack Herramientas Buscar en Tema Desplegado
  #1 (permalink)  
Antiguo 02-Jul-2009, 04:27
Junior Member
Iniciad@
 
Fecha de Ingreso: 02-July-2009
Mensajes: 5
Predeterminado MshflexGrid a Excel con filtro

Buenas, es la primera vez que utilizo el foro y espero que me puedan ayudar, aca mi problema:
Tengo un mshflexgrid conectado a una base access que mediante un boton exporto a excel, el codigo de ese boton es:

vb Código:
  1. Private Sub Command4_Click()
  2. Dim i As Long, j As Long
  3. Dim objExcel As Object
  4. Dim objWorkbook As Object
  5. On Error Resume Next ' por si se cierra Excel antes de cargar los datos
  6. Set objExcel = CreateObject("Excel.Application")
  7. objExcel.Visible = True
  8. Set objWorkbook = objExcel.Workbooks.Add
  9. For i = 0 To MSHFlexGrid1.Rows - 1
  10. MSHFlexGrid1.Row = i
  11. For j = 0 To MSHFlexGrid1.Cols - 1
  12. MSHFlexGrid1.Col = j
  13. objWorkbook.ActiveSheet.Cells(i + 3, j + 1).Value = MSHFlexGrid1.Text
  14. Next
  15. Next
  16. objExcel.Cells.Select
  17. objExcel.Selection.EntireColumn.AutoFit ' Ancho de columna
  18. objExcel.Range("A1").Select
  19. objExcel.ActiveWindow.SelectedSheets.PrintPreview ' Previsualizar informe
  20. Set objWorkbook = Nothing
  21. Set objExcel = Nothing
  22. End Sub

Este codigo me funciona a la perfeccion, pero no logra lo que quiero, ya que exporta todos los datos juntos y yo necesito que los separe segun el campo "Categoria" es decir me los exporta de esta maner:

Nombre Apellido Categoria
Patricio Rodriguez 0.70
Javier Perez 0.80

y yo quiero que me exporte de la siguiente manera:


0.70
Nombre Apellido Categoria
Patricio Rodriguez 0.70

0.80
Nombre Apellido Categoria
Javier Rodriguez 0.80


Es posible? Si no se puede con excel se puede con word o haciendo un report??

Gracias!!
Responder Citando
  #2 (permalink)  
Antiguo 03-Jul-2009, 00:35
Junior Member
Iniciad@
 
Fecha de Ingreso: 02-July-2009
Mensajes: 5
Predeterminado

25 visitas ni una solucion! Ayuda!!!
Responder Citando
  #3 (permalink)  
Antiguo 03-Jul-2009, 01:23
Avatar de Leandro
Moderador
Veteran@
 
Fecha de Ingreso: 08-December-2005
Mensajes: 548
Enviar un mensaje por MSN a Leandro Enviar un mensaje por Yahoo  a Leandro
Predeterminado

Cita:
Iniciado por pachu93 Ver Mensaje
25 visitas ni una solucion! Ayuda!!!
Hola bienvenido foro, paciencia ante nada, porque no probas ir cambiando el orden de los for

For j = 0 To MSHFlexGrid1.Cols - 1

For i = 0 To MSHFlexGrid1.Rows - 1




o bien cambiar el orden de la i o j

objWorkbook.ActiveSheet.Cells(i + 3, j + 1).Value = MSHFlexGrid1.Text

no es dificil lo que vos queres hacer, es cuestion de ir jugando y probando, si no entendes alguna parte del codigo podes preguntar

Saludos
Responder Citando
  #4 (permalink)  
Antiguo 03-Jul-2009, 17:03
Avatar de Carlos200576
Senior Member
Avanzad@
 
Fecha de Ingreso: 07-June-2007
Ubicación: Mexico
Mensajes: 133
Predeterminado Espero sirva

Ya hace as hice algo asi, espero te sirva

Private Sub ExportaPlacas()
Dim xlApli As Object
Dim xlLibro As Excel.Workbook
Dim FilaFlex As Integer
Dim FilaExcel As Integer

Set xlApli = New Excel.Application
Set xlLibro = xlApli.Workbooks.Add
''''''''''''''''''''''''''''''''''''''''''''''''''
With xlApli
.Sheets(1).Activate

FilaExcel = 10

.Range("A1:E1").Font.Size = 12
.Range("A1:E1").Font.Name = "Times New Roman"
.Range("A1:E7").Font.Bold = True
.Range("A1:E7").Font.Italic = True
.Range("A8:E8").Borders.LineStyle = 1
.Range("A8:E8").Interior.ColorIndex = 6
.Range("A8:E8").HorizontalAlignment = xlCenter
.Range("A1:E1").Select
End With
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
With xlApli.Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
With xlApli.Selection
.Merge
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders.Weight = xlMedium
.Borders.ColorIndex = xlAutomatic
End With
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
With xlApli.Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
With xlApli.Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
With xlApli.Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
With xlApli
.Sheets(1).Activate
.Range("A1") = "LISTADO DE SERVICIOS POR PLACAS"
.Range("A3") = "CLIENTE :"
.Range("B3") = CBONOMBRE.Text
.Range("A5") = "FECHA :"
.Range("B5") = Date
.Range("A6") = "HORA :"
.Range("B6") = Time
.Range("A8") = "PLACAS"
.Range("A10") = MSFlexGrid1.TextMatrix(1, 2)
.Range("B8") = "FECHA SERVICIO"
.Range("C8") = "MARCA"
.Range("D8") = "KILOMETRAJE"
.Range("E8") = "DETALLE SERVICIO"
End With


With MSFlexGrid1
For FilaFlex = 1 To .Rows - 1
xlApli.Cells(FilaExcel, 2) = .TextMatrix(FilaFlex, 1)
xlApli.Cells(FilaExcel, 3) = .TextMatrix(FilaFlex, 3)
xlApli.Cells(FilaExcel, 4) = .TextMatrix(FilaFlex, 4)
xlApli.Cells(FilaExcel, 5) = .TextMatrix(FilaFlex, 5)
FilaExcel = FilaExcel + 1
Next
End With
xlApli.Columns.AutoFit

With xlApli
.Sheets(1).Activate
Columns("B:B").ColumnWidth = 24
End With
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
With xlApli.ActiveSheet.PageSetup
.LeftMargin = Application.InchesToPoints(0.196850393700787)
.RightMargin = Application.InchesToPoints(0.196850393700787)
.TopMargin = Application.InchesToPoints(0.393700787401575)
.BottomMargin = Application.InchesToPoints(0.393700787401575)
.CenterHorizontally = True
.Orientation = xlLandscape
End With
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
xlApli.Visible = True
Set xlApli = Nothing
End Sub
__________________
Que la fuerza te acompañe !
Responder Citando
  #5 (permalink)  
Antiguo 04-Jul-2009, 21:07
Junior Member
Iniciad@
 
Fecha de Ingreso: 02-July-2009
Mensajes: 5
Predeterminado

Les cuento que soy muy novato en esto de la programacion y no tengo mucha idea de como colocar el codigo que me diste carlos. NO veo que haga referenci a ninguna accion de un voton para exportar a excel.
Lo que me dicen anteriormente de jugar con las posiciones, lo eh hecho, pero lo que no me sale es que solo me aparezcan los registros de determinada "Categoria" es decir no eh logrado filtrar por campos.

Espero que me sepan entender y ayudar!

Gracias!!!!
Responder Citando
  #6 (permalink)  
Antiguo 06-Jul-2009, 15:23
Avatar de Carlos200576
Senior Member
Avanzad@
 
Fecha de Ingreso: 07-June-2007
Ubicación: Mexico
Mensajes: 133
Predeterminado

Ok, lo que pasa es que trae mucho rollo para el formato de la hoja, pero tratera de explicarlo:
Primero, probablemente no era la mejor manera de hacerlo, pero te comento que lo hice ya hace varios as y fue lo que me resulto, ppuedes cambiarlo de privado a funcion si tu quieres. Si la funcion la metes dentro de un command en el evento click ya tendras tu "referencia" a un boton.
Segundo.

With xlApli
.Sheets(1).Activate
.Range("A1") = "LISTADO DE SERVICIOS POR PLACAS"
.Range("A3") = "CLIENTE :"
.Range("B3") = CBONOMBRE.Text
.Range("A5") = "FECHA :"
.Range("B5") = Date
.Range("A6") = "HORA :"
.Range("B6") = Time
.Range("A8") = "PLACAS"
.Range("A10") = MSFlexGrid1.TextMatrix(1, 2)
.Range("B8") = "FECHA SERVICIO"
.Range("C8") = "MARCA"
.Range("D8") = "KILOMETRAJE"
.Range("E8") = "DETALLE SERVICIO"
End With


With MSFlexGrid1
For FilaFlex = 1 To .Rows - 1
xlApli.Cells(FilaExcel, 2) = .TextMatrix(FilaFlex, 1)
xlApli.Cells(FilaExcel, 3) = .TextMatrix(FilaFlex, 3)
xlApli.Cells(FilaExcel, 4) = .TextMatrix(FilaFlex, 4)
xlApli.Cells(FilaExcel, 5) = .TextMatrix(FilaFlex, 5)
FilaExcel = FilaExcel + 1
Next
End With
xlApli.Columns.AutoFit

Creo que aqui debe haber algo de lo que buscas, es cuestio de ver donde caen los controles y las celdas del grid.

Disculpa si no puedo explicarme un poco mejor pero estoy haciendo mis pininos en esto de ayudar.

Sorry y suerte !
__________________
Que la fuerza te acompañe !
Responder Citando
  #7 (permalink)  
Antiguo 06-Jul-2009, 17:44
Junior Member
Iniciad@
 
Fecha de Ingreso: 02-July-2009
Mensajes: 5
Predeterminado

Gracias por la respuesta, fuiste muy claro. Como dijiste puse el codigo que me diste anteriormente dentro de el evento clic de un command boton, pero me marca el siguiente error: .Sheets(1).Activate Es decir me lo marca en amarillo que puede ser?
Responder Citando
  #8 (permalink)  
Antiguo 06-Jul-2009, 18:13
Avatar de Carlos200576
Senior Member
Avanzad@
 
Fecha de Ingreso: 07-June-2007
Ubicación: Mexico
Mensajes: 133
Predeterminado

Extra, para checarlo lo copie y lo corri en otra aplicacion y me funciona, no debiera marcarte nada porque solo le estas diciendo que la hoja activa es la uno, pero igual todas las lineas que digan ".Sheets(1).Activate" quitaselo, haber que gestos te hace !

Saludos.
__________________
Que la fuerza te acompañe !
Responder Citando
  #9 (permalink)  
Antiguo 06-Jul-2009, 19:20
Junior Member
Iniciad@
 
Fecha de Ingreso: 02-July-2009
Mensajes: 5
Predeterminado

Mira el codigo me queda asi:
Por un lado puse esto:

vb Código:
  1. Private Sub ExportaPlacas()
  2. Dim xlApli As Object
  3. Dim xlLibro As Excel.Workbook
  4. Dim FilaFlex As Integer
  5. Dim FilaExcel As Integer
  6.  
  7. Set xlApli = New Excel.Application
  8. Set xlLibro = xlApli.Workbooks.Add
  9. End Sub

Y por el otro lado puse esto:

vb Código:
  1. Private Sub Command4_Click()
  2. With xlApli
  3. .Sheets(1).Activate
  4.  
  5. FilaExcel = 10
  6.  
  7. .Range("A1:E1").Font.Size = 12
  8. .Range("A1:E1").Font.Name = "Times New Roman"
  9. .Range("A1:E7").Font.Bold = True
  10. .Range("A1:E7").Font.Italic = True
  11. .Range("A8:E8").Borders.LineStyle = 1
  12. .Range("A8:E8").Interior.ColorIndex = 6
  13. .Range("A8:E8").HorizontalAlignment = xlCenter
  14. .Range("A1:E1").Select
  15. End With
  16. '''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
  17. With xlApli.Selection
  18. .HorizontalAlignment = xlCenter
  19. .VerticalAlignment = xlBottom
  20. .WrapText = False
  21. .Orientation = 0
  22. .AddIndent = False
  23. .IndentLevel = 0
  24. .ShrinkToFit = False
  25. .ReadingOrder = xlContext
  26. .MergeCells = False
  27. End With
  28. '''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
  29. With xlApli.Selection
  30. .Merge
  31. .Borders(xlDiagonalDown).LineStyle = xlNone
  32. .Borders(xlDiagonalUp).LineStyle = xlNone
  33. .Borders(xlEdgeLeft).LineStyle = xlContinuous
  34. .Borders.Weight = xlMedium
  35. .Borders.ColorIndex = xlAutomatic
  36. End With
  37. '''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
  38. With xlApli.Selection.Borders(xlEdgeTop)
  39. .LineStyle = xlContinuous
  40. .Weight = xlMedium
  41. .ColorIndex = xlAutomatic
  42. End With
  43. '''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
  44. With xlApli.Selection.Borders(xlEdgeBottom)
  45. .LineStyle = xlContinuous
  46. .Weight = xlMedium
  47. .ColorIndex = xlAutomatic
  48. End With
  49. '''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
  50. With xlApli.Selection.Borders(xlEdgeRight)
  51. .LineStyle = xlContinuous
  52. .Weight = xlMedium
  53. .ColorIndex = xlAutomatic
  54. End With
  55. '''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
  56. With xlApli
  57. .Sheets(1).Activate
  58. .Range("A1") = "LISTADO DE SERVICIOS POR PLACAS"
  59. .Range("A3") = "CLIENTE :"
  60. .Range("B3") = CBONOMBRE.Text
  61. .Range("A5") = "FECHA :"
  62. .Range("B5") = Date
  63. .Range("A6") = "HORA :"
  64. .Range("B6") = Time
  65. .Range("A8") = "PLACAS"
  66. .Range("A10") = MSFlexGrid1.TextMatrix(1, 2)
  67. .Range("B8") = "FECHA SERVICIO"
  68. .Range("C8") = "MARCA"
  69. .Range("D8") = "KILOMETRAJE"
  70. .Range("E8") = "DETALLE SERVICIO"
  71. End With
  72.  
  73.  
  74. With MSFlexGrid1
  75. For FilaFlex = 1 To .Rows - 1
  76. xlApli.Cells(FilaExcel, 2) = .TextMatrix(FilaFlex, 1)
  77. xlApli.Cells(FilaExcel, 3) = .TextMatrix(FilaFlex, 3)
  78. xlApli.Cells(FilaExcel, 4) = .TextMatrix(FilaFlex, 4)
  79. xlApli.Cells(FilaExcel, 5) = .TextMatrix(FilaFlex, 5)
  80. FilaExcel = FilaExcel + 1
  81. Next
  82. End With
  83. xlApli.Columns.AutoFit
  84.  
  85. With xlApli
  86. .Sheets(1).Activate
  87. Columns("B:B").ColumnWidth = 24
  88. End With
  89. '''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
  90. With xlApli.ActiveSheet.PageSetup
  91. .LeftMargin = Application.InchesToPoints(0.196850393700787)
  92. .RightMargin = Application.InchesToPoints(0.196850393700787)
  93. .TopMargin = Application.InchesToPoints(0.393700787401575)
  94. .BottomMargin = Application.InchesToPoints(0.393700787401575)
  95. .CenterHorizontally = True
  96. .Orientation = xlLandscape
  97. End With
  98. '''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''
  99. xlApli.Visible = True
  100. Set xlApli = Nothing
  101. End Sub

Y me marca como error el ".Sheets(1).Activate" y si lo saco me marca como error la linea que sigue.
Me parece que me falta algo. Que tenes puesto vos en el form?
YO tengo un MSHFLEXGRID y un par de botones.

Gracias!
Responder Citando
  #10 (permalink)  
Antiguo 06-Jul-2009, 19:57
Avatar de Carlos200576
Senior Member
Avanzad@
 
Fecha de Ingreso: 07-June-2007
Ubicación: Mexico
Mensajes: 133
Predeterminado

pasame esa pantalla, para revisarla y te aviso

oguajardo@smtec.com.mx
__________________
Que la fuerza te acompañe !
Responder Citando
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Activado



La franja horaria es GMT +2. Ahora son las 23:20.


Visual Studio .VisualBasic.net .ADO.NET .ASP.NET .Framework .Crystal report
[Visual Basic .NET · Información legal · Condiciones de uso · Publicidad · Contacto · RSS novedades Foro · Inicio]
Un sitio web de Internelia (Ontecnia) © Copyright 2010 canalvisualbasic.net. Todos los derechos reservados