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 IntegerDim j As Integer
' -- Colocar el cursor de espera mientras se exportan los datosMe.MousePointer = vbHourglass
If n_Filas = 0 ThenMsgBox "No hay datos para exportar a excel. Se ha indicado 0 en el parámetro Filas ": Exit Sub
Else
' -- Crear nueva instancia de ExcelSet Obj_Excel = CreateObject("Excel.Application")
' -- Agregar nuevo libroSet 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 columnaicol = icol + 1
' -- Obtener el caption de la columnaObj_Hoja.cells(1, icol) = dgCompra.Columns(i).Caption
' -- Recorrer las filasFor j = 0 To n_Filas - 1
' -- Asignar el valor a la celda del ExcelObj_Hoja.cells(j + 2, icol) = _
dgCompra.Columns(i).CellValue(dgCompra.GetBookmark(j))
Next
End If
Next
' -- Hacer excel visibleObj_Excel.Visible = True
' -- Opcional : colocar en negrita y de color rojo los enbezados en la hojaWith 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 cursorMe.MousePointer = vbDefault
Exit Sub
' -- ErrorError_Handler:MsgBox Err.Description, vbCritical
On Error Resume Next
Set Obj_Hoja = Nothing Set Obj_Libro = Nothing Set Obj_Excel = NothingMe.MousePointer = vbDefault
End Sub
Valora esta pregunta


0

