Foros del Web » Programación para mayores de 30 ;) » Programación General »

MSFlexGrid Copiar a Excel - VB 6.0

Estas en el tema de MSFlexGrid Copiar a Excel - VB 6.0 en el foro de Programación General en Foros del Web. Hola a todos, Ando en busca de su colaboración,ya sean ideas o algún código, que me permita copiar las celdas seleccionadas en un MSFlexGrid para ...
  #1 (permalink)  
Antiguo 11/08/2004, 14:01
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 2 meses
Puntos: 1
MSFlexGrid Copiar a Excel - VB 6.0

Hola a todos,

Ando en busca de su colaboración,ya sean ideas o algún código, que me permita copiar las celdas seleccionadas en un MSFlexGrid para luego pegarlas en Excel.

Saludes.
__________________
Leer es Saber, REEL.
Mi Blog
  #2 (permalink)  
Antiguo 13/08/2004, 07:33
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 19 años, 8 meses
Puntos: 13
Respuesta

Hola. Aca te van algunos tips:

Antes que nada tenes que activar la referencia a Excel (Microsoft Excel 10.0 Object Library). Luego defini una variable de tipo Excel.Application. Aca te paso el codigo con su comentario de lo que hace cada linea

Set Planilla = New Excel.Application '
Planilla.Visible = True ' Abre el libro
Planilla.Workbooks.Add '

Planilla.Worksheets(1).Range("A3").Value = txt.Text ' Con este asocias la celda que quieras al contenido del objeto/variable (La grilla en tu caso).

Planilla.Worksheets(1).Range("A2:C8").Select 'Selecciona el rango
Planilla.Worksheets(1).Range("A2:A8").Merge 'Une las celdas
Planilla.Worksheets(1).Range("A2:A8").AutoFormat (1) 'Aplica el autoformato definido en el parametro

Planilla.Selection.Font.Bold = True
Planilla.Selection.Font.Name = "Tahoma"
Planilla.Selection.Font.Size = 12 'Formato de texto
'Planilla.Selection.Font.Italic = True
'Planilla.Selection.Font.Underline = True

Planilla.Selection.Font.ColorIndex = 35 'Color de fuente
Planilla.Selection.Interior.ColorIndex = 31 'Color de interior de la celda
Planilla.Selection.Borders.ColorIndex = 1 'Color de la celda
Planilla.Selection.Borders.Weight = 4 'Ancho de la celda (de 1 a 4 solamente)
Planilla.Selection.Borders.LineStyle = xlDouble 'Estilo de borde


'Bordes personalizados
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlDouble
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlDouble
.Weight = xlThick
.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

Planilla.Selection.Font.Superscript = True 'Texto en superindice
Planilla.Selection.Font.Subscript = True 'Texto en subindice

'Alineado de celdas
With Selection
.HorizontalAlignment = xlRight 'xlCenter | xlleft
.VerticalAlignment = xlBottom
End With

'Tamaño de celdas
Planilla.Selection.ColumnWidth = 15
Planilla.Selection.RowHeight = 15

'Insertar imagenes
ActiveSheet.Pictures.Insert("C:\Mis documentos\Lucas\Imagenes\Castillo.jpg").Select 'Inserta imagen
Selection.ShapeRange.ScaleWidth 0.55, msoFalse, msoScaleFromBottomRight 'Multiplica el ancho por el nº
Selection.ShapeRange.ScaleHeight 0.55, msoFalse, msoScaleFromBottomRight 'Multiplica el alto por el nº
Selection.ShapeRange.IncrementLeft 34 'Para mover
Selection.ShapeRange.IncrementTop 21 'la imagen


Bueno, tenes para entretenerte...
De todas maneras si queres agregar codigo que no esta arriba, fácil: programate una macro en Excel, anda a editarla y despues pasate el codigo a VB. Espero que te sirva. Saludos
  #3 (permalink)  
Antiguo 13/08/2004, 08:09
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 2 meses
Puntos: 1
Muchas gracias por tu respuesta. Voy a probar hacerlo como me has indicado.

Saludes.
__________________
Leer es Saber, REEL.
Mi Blog
  #4 (permalink)  
Antiguo 13/08/2004, 16:40
Avatar de aavg  
Fecha de Ingreso: abril-2002
Ubicación: Morelia México
Mensajes: 356
Antigüedad: 22 años
Puntos: 1
Que tal reel, aqui te envio un ejemplo que tengo con un MSHFLEXGRID que fue el que tu mencionaste en tu pregunta...

'Abre una hoja de cálculo Excel con nuestro Grid actual
'Aqui esta funcion recibe en ADE una ruta en disco y el nombre con el cual quieres guardar tu archivo de Excel, ejemplo "C:\Exportado.xls"

Public Function EExcel(ByVal ADE As String)

Dim XlsApl As Excel.Application
Dim xlsLibro As Excel.Workbook
Dim y As Long

Screen.MousePointer = flexHourglass

Set XlsApl = New Excel.Application
With XlsApl
.Workbooks.Add
Set xlsLibro = .ActiveWorkbook

With xlsLibro.Worksheets(1)
.Activate
For x = 0 To Grid.Rows - 1
For y = 2 To Grid.Cols - 1
If x = 1 Then Exit For
.Cells(x + 1, y - 1) = Grid.TextMatrix(x, y)
Next y
Next x
End With
'.Visible = True 'Esto es si quieres que se muestre y abra excel al crearla
.Visible = False 'Si solo quieres que se genere el libro sin mostrarse
End With

xlsLibro.SaveAs (ADE)
xlsLibro.Close (ADE)
Set xlsLibro = Nothing
Set XlsApl = Nothing
'MsgBox "Libro de Excel Creado", vbInformation + vbOKOnly, "Terminado"
Screen.MousePointer = 0
End Function


...y listo, eso es todo, un codigo bastante sencillo y ya que lo he puesto en una función solo necesitas mandarle el nombre de tu libro de excel al llamarla


Espero te sea de ayuda, hasta pronto
__________________
Abraham Velasco
Usuario # 516 en los Foros del Web.
El hombre no vale por lo que sabe, sino por lo que transmite
C'est parce qu'il y a un Dieu que nous sommes libres
  #5 (permalink)  
Antiguo 13/08/2004, 16:44
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 2 meses
Puntos: 1
Muchas gracias Abraham, agradezco mucho tu colaraboración, el código que has puesto me va ayudar muchísimo.

Saludes.
__________________
Leer es Saber, REEL.
Mi Blog
  #6 (permalink)  
Antiguo 01/07/2011, 10:42
 
Fecha de Ingreso: marzo-2009
Mensajes: 23
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: MSFlexGrid Copiar a Excel - VB 6.0

Hola buenas tardes, tengo el siguiente problema a ver si alguien me puede colaborar:

en un programa vb6 necesito guardar lo que tiene un mshflexgrid mediante la opcion guardar archivo en excel, pero aunque tengo la referencia microsoft excel 14.0 Object library me dice permiso denegado (error 70).

El codigo que utilizo es el brindado por AAVG:

Public Function EExcel(ByVal ADE As String)

Dim XlsApl As Excel.APPLICATION
Dim xlsLibro As Excel.Workbook
Dim y As Long

Screen.MousePointer = flexHourglass

Set XlsApl = New Excel.APPLICATION
With XlsApl
.Workbooks.Add
Set xlsLibro = .ActiveWorkbook

With xlsLibro.Worksheets(1)
.Activate
For x = 0 To Grid.Rows - 1
For y = 2 To Grid.Cols - 1
If x = 1 Then Exit For
.Cells(x + 1, y - 1) = Grid.TextMatrix(x, y)
Next y
Next x
End With
'.Visible = True 'Esto es si quieres que se muestre y abra excel al crearla
.Visible = False 'Si solo quieres que se genere el libro sin mostrarse
End With

xlsLibro.SaveAs (ADE)
xlsLibro.Close (ADE)
Set xlsLibro = Nothing
Set XlsApl = Nothing
'MsgBox "Libro de Excel Creado", vbInformation + vbOKOnly, "Terminado"
Screen.MousePointer = 0
End Function

pero aun asi me sale error 70.

cualquier idea bienvenida...
  #7 (permalink)  
Antiguo 21/03/2014, 07:20
 
Fecha de Ingreso: marzo-2014
Mensajes: 3
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: MSFlexGrid Copiar a Excel - VB 6.0

buenas tardes... muy interesante lo que jan escrito, me a servido de mucho, y para remplazar el valor de un texbox de visual y sustituirlo en una celda de exel concreta de un documento que tengo?

el valor que quiero poner no es fijo, es decir cada vez que inserte un numero en el textbox.. se me cambie como lo hago, ? muchar gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 15:08.