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:
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


0