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.
![Adios](http://static.forosdelweb.com/fdwtheme/images/smilies/adios.gif)
| ||||
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 ![]() |
| ||||
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 |
| |||
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... |
| |||
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 |