Gracias de antemano por ayudar a los demás, ojala y puedas hacerlo conmigo, mira deseo exportar el contenido de un datagrid a excel en el datagrid estoy presentando alrededor de 40 columnas que se muestran porque están enlazada a un dataenvironment. Espero no sea muy complicado. Disculpa y gracias
1 Respuesta
Respuesta de athrarn
1
1
athrarn, - Sistemas Operativos : - MS-DOS, Windows 3
Prueba usar esta clase para exportar datos a Excel. Debes añadir la referencia de visual basic de la librería de objetos de Ms Excel 10.0 La clase es esta y yo la llamo ClsExcel. Option Explicit Dim app As Excel.Application Dim Libros As Excel.Workbooks Dim Libro As Excel.Workbook Dim hoja As Excel.Worksheet Dim blncargado As Boolean Public Sub CrearExcel(archivo As String) Set app = New Excel.Application Set Libros = app.Workbooks Set Libro = Libros.Add() Libro.SaveAs archivo blncargado = True End Sub Public Sub AbrirExcel(archivo As String) Set app = New Excel.Application Set Libros = app.Workbooks Set Libro = Libros.Open(archivo) End Sub Public Sub DevolverHojas(ByRef PsHojas() As String) Dim i As Long ReDim Preserve PsHojas(0 To 0) For i = 0 To Libro.Worksheets.Count - 1 PsHojas(UBound(PsHojas)) = Libro.Worksheets(i + 1).Name ReDim Preserve PsHojas(0 To UBound(PsHojas) + 1) Next ReDim Preserve PsHojas(0 To UBound(PsHojas) - 1) End Sub Public Sub AbrirHoja(PeHoja As String) On Error GoTo HojaNoExiste Set hoja = Libro.Worksheets(PeHoja) Exit Sub HojaNoExiste: MsgBox "Error, el libro excel debe tener una hoja llamada '" & PeHoja & "'" Me.CerrarExcel End Sub Public Function DevolverCelda(X As Long, Y As Long) As String DevolverCelda = hoja.Cells(X, Y) End Function Public Sub PonerValorCelda(X As Long, Y As Long, ByVal Valor As String) hoja.Cells(X, Y) = Replace(Valor, "=", "(=)") End Sub Public Sub PonerValorTituloCelda(X As Long, Y As Long, Valor As String) hoja.Cells(X, Y).Font.Bold = True hoja.Cells.BorderAround hoja.Cells(X, Y) = Valor End Sub Private Sub Class_Initialize() blncargado = False End Sub Private Sub Class_Terminate() If blncargado Then Libro.Sabe Libro.Close Libros.Close End If End Sub Public Sub GuardarComo(archivo As String) Libro.SaveAs archivo End Sub Public Sub CerrarExcel(Optional ByVal guardar As Boolean = True) If blncargado Then If guardar Then Libro.Save End If Libro.Close Libros.Close End If blncargado = False End Sub Para usar la clase usa un código como este : dim objExcel as ClsExcel Set objExcel = new ClsExcel objExcel.CrearExcel app.Path & "\" & Subfolder.Name & ".xls" 'objExcel.AbrirExcel (app.Path & "\" & Subfolder & ".xls") ObjExcel. AbrirHoja "HOJA1" ObjExcel. PonerValorCelda 1, 1, "Palabra"