Buenos dias,
Tengo una aplicación de la cual precisamos exportar cierta informacion a excel cada x tiempo. Hasta ahora usaba el siguiente codigo en una accion de la vista que quiero exportar. Me recorro toda la vista y de cada documento exporto unos 20 campos a excel, tanto de texto como fechas. El problema que tengo es que cuando habia pocos datos el proceso era mas o menos rapido pero ahora que hay unos 3000 registros en la vista a exportar es un proceso bastante lento.
¿Hay alguna otra forma de realizar la exportacion de los datos de una vista a excel?
Dim ns As New NotesSession
Dim ndb As NotesDatabase
Dim nview As notesview
Dim nd As notesdocument
Dim Excel As Variant
Dim xlWorkbook As Variant
Dim xHoja As Variant
Set ndb = ns.CurrentDatabase
Set nview=ndb.getview("exportar")
Set nd = nview.GetFirstDocument
If nd Is Nothing Then
Beep
Msgbox("No existen datos")
Exit Sub
Else
Goto continuar
End If
continuar:
Set nd = nview.GetFirstDocument
Print "Iniciando la creación de Informe..."
Print "Conectando con EXCEL..."
Set Excel = CreateObject( "Excel.Application" )
Excel.Visible = True
Excel.Workbooks.Add '
Set xlWorkbook = Excel.ActiveWorkbook
row = 0 '//Inicializamos las columnas a 0
documento = 0
Print "Iniciando la creación de Informe..."
While Not (nd Is Nothing)
row = row + 1
documento = documento + 1
If row = 1 Then
'// titulo
Excel.Cells(row,1).Value = "Datos Exportados"
Excel.Selection.Font.Bold = True
Excel.Selection.Font.Italic = True
Excel.Selection.Interior.ColorIndex = 15
Excel.Selection.Font.Size = 13
Excel.Range("A1:S1").Select
Excel.Selection.Merge
Elseif row = 2 Then
'/cabeceras
Excel.Cells(row,1).Value="columna A"
Excel.Cells(row,1).Select
Excel.Selection.Font.Bold = True
Excel.Selection.Font.Size = 11
Excel.Cells(row,2).Value="columna A"
Excel.Cells(row,2).Select
Excel.Selection.Font.Bold = True
Excel.Selection.Font.Size = 11
Excel.Cells(row,3).Value="columna A"
Excel.Cells(row,3).Select
Excel.Selection.Font.Bold = True
Excel.Selection.Font.Size = 11
Excel.Cells(row,4).Value="columna A"
Excel.Cells(row,4).Select
Excel.Selection.Font.Bold = True
Excel.Selection.Font.Size = 11
Excel.Cells(row,5).Value="columna A"
Excel.Cells(row,5).Select
Excel.Selection.Font.Bold = True
Excel.Selection.Font.Size = 11
Excel.Cells(row,6).Value="columna A"
Excel.Cells(row,6).Select
Excel.Selection.Font.Bold = True
Excel.Selection.Font.Size = 11
Excel.Cells(row,7).Value="columna A"
Excel.Cells(row,7).Select
Excel.Selection.Font.Bold = True
Excel.Selection.Font.Size = 11
// son 20 columnas de cabecera pero no pongo todas
Else
'//Introducimos los valores--------------------------------------------------------------------
Excel.Cells(row,1).Value=nd.campo1(0)
Excel.Cells(row,2).Value=nd.campo2(0)
Excel.Cells(row,3).Value= nd.campo3(0)
Excel.Cells(row,4).Value=nd.campo4(0)
Excel.Cells(row,6).Value=nd.campo5(0)
Excel.Cells(row,7).Value=nd.campo6(0)
Excel.Cells(row,8).Value=nd.campo7(0)
If nd.fecha(0)="" Then
Excel.Cells(row,8).Value=nd.fecha(0)
Else
Excel.Cells(row,8).Value=Cdat(nd.fecha(0))
End If
Set nd = nview.GetNextDocument(nd)
End If
Wend
'Autoajusto las columnas
Excel.Columns("A:A").EntireColumn.AutoFit
Excel.Columns("B:B").EntireColumn.AutoFit
Excel.Columns("C:C").EntireColumn.AutoFit
Excel.Columns("D:D").EntireColumn.AutoFit
Excel.Columns("E:E").EntireColumn.AutoFit
Excel.Columns("F:F").EntireColumn.AutoFit
Excel.Columns("G:G").EntireColumn.AutoFit
Excel.Columns("H:H").EntireColumn.AutoFit
Excel.Columns("I:I").EntireColumn.AutoFit
Excel.Columns("J:J").EntireColumn.AutoFit
Excel.Columns("K:K").EntireColumn.AutoFit
Excel.Columns("L:L").EntireColumn.AutoFit
Excel.Columns("M:M").EntireColumn.AutoFit
Excel.Columns("N:N").EntireColumn.AutoFit
Excel.Columns("O:O").EntireColumn.AutoFit
Excel.Columns("P:P").EntireColumn.AutoFit
Excel.Columns("Q:Q").EntireColumn.AutoFit
Excel.Columns("R:R").EntireColumn.AutoFit
Excel.Columns("S:S").EntireColumn.AutoFit
Print "Se han exportado datos de "&documento" documentos"