Visual Basic - Exportar Datagrid a Excel

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 53
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Exportar Datagrid a Excel

Publicado por Emilio (27 intervenciones) el 28/02/2020 11:39:09
Intento exportar a Excel mi dgCompra, para lo que he copiado el código, ya famoso, que generosamente ofrece Luciano Lodola -- http://www.recursosvisualbasic.com.ar/ , pero al ejecutarlo me dice "Número de fila incorrecto".
Repaso el código y solo encuentro algo relacionado con este mensaje en la variable 'n_Fila', que no entiendo, porque inmediatamente al inicio del Sub ya se hace uso de ella para el mensaje en caso de que valga cero.
¿Alguien puede decirme dónde se carga esa variable? ¿O por qué en mi caso me dice "número incorrecto"?
Este es el código del Sub exportar:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
' -----------------------------------------------------------------------------------------
' \\ -- Sub para exportar
' -----------------------------------------------------------------------------------------
Private Sub exportar_Datagrid(dgCompra As Datagrid, n_Filas As Long)
 
Dim Obj_Excel   As Object
Dim Obj_Libro   As Object
Dim Obj_Hoja    As Object
 
    On Error GoTo Error_Handler
 
Dim i, icol   As Integer
Dim j   As Integer
 
    ' -- Colocar el cursor de espera mientras se exportan los datos
    Me.MousePointer = vbHourglass
 
    If n_Filas = 0 Then
        MsgBox "No hay datos para exportar a excel. Se ha indicado 0 en el parámetro Filas ": Exit Sub
    Else
 
        ' -- Crear nueva instancia de Excel
        Set Obj_Excel = CreateObject("Excel.Application")
        ' -- Agregar nuevo libro
        Set Obj_Libro = Obj_Excel.Workbooks.Open("c:\Libro.xls")
 
        ' -- Referencia a la Hoja activa ( la que añade por defecto Excel )
        Set Obj_Hoja = Obj_Excel.ActiveSheet
 
        icol = 0
        ' --  Recorrer el Datagrid ( Las columnas )
        For i = 0 To dgCompra.Columns.Count - 1
            If dgCompra.Columns(i).Visible Then
                ' -- Incrementar índice de columna
                icol = icol + 1
                ' -- Obtener el caption de la columna
                Obj_Hoja.cells(1, icol) = dgCompra.Columns(i).Caption
                ' -- Recorrer las filas
                For j = 0 To n_Filas - 1
                    ' -- Asignar el valor a la celda del Excel
                    Obj_Hoja.cells(j + 2, icol) = _
                    dgCompra.Columns(i).CellValue(dgCompra.GetBookmark(j))
                Next
            End If
        Next
 
        ' -- Hacer excel visible
        Obj_Excel.Visible = True
 
        ' -- Opcional : colocar en negrita y de color rojo los enbezados en la hoja
        With Obj_Hoja
            .Rows(1).Font.Bold = True
            .Rows(1).Font.Color = vbRed
            ' -- Autoajustar las cabeceras
            .Columns("A:Z").AutoFit
        End With
    End If
 
    ' -- Eliminar las variables de objeto excel
    Set Obj_Hoja = Nothing
    Set Obj_Libro = Nothing
    Set Obj_Excel = Nothing
 
    ' -- Restaurar cursor
    Me.MousePointer = vbDefault
 
Exit Sub
 
' -- Error
Error_Handler:
 
    MsgBox Err.Description, vbCritical
    On Error Resume Next
 
    Set Obj_Hoja = Nothing
    Set Obj_Libro = Nothing
    Set Obj_Excel = Nothing
    Me.MousePointer = vbDefault
 
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder