Buenas tardes,
Tengo una aplicación de informes de la cual se exportan a excel los datos de una vista en funcion de unos parametros.
Tengo un agente que me realiza este proceso pero el problema es que es muy lento. Al principio como solo se exportaban 30-40 documentos iba rapido pero ahora que hay que exportar una media de 2000-3000 documentos tarda demasiado tiempo y la gente se esta quejando.
Este es mi agente, ¿hay alguna otra manera de exportar a excel de una manera mas o menos rapida? Que no sea la opcion de seleccionar todo, copiar como tabla, y pegarlo en excel ya que alguno de los datos que exporto son calculados al momento.
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
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,5).Value=nd.campo5(0)
If nd.fecha(0)="" Then
Excel.Cells(row,6).Value=nd.fecha(0)
Else
Excel.Cells(row,6).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"