Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Citar Citar
20/06/2007, 02:56 #4
Avatar de Anibal
Anibal
Anibal est desconectado Senior Member Guru
Fecha de ingreso
19 dic, 05
Ubicacin
Spain
Mensajes
1,269
Predeterminado
Bien, para eso hay varios procedimientos. El mas habitual ( o al menos,
del que mas ejemplos he visto) es con un doble bucle pasar los registros a las c
eldas de la hoja de clculo, pero esto tiene un gran inconveniente y es que tarda
mucho.
Yo lo hago con esta funcin que tarda apenas dos segundos en copiar un rec
ordset con 12800 registros y 19 campos.
Cdigo:
Function ExportExcel(ByVal rs As ADODB.Recordset)
' Nota: tiene que estar activada la referencia a Microsoft Excel xx.x O
bject Library
Dim oExcel As Excel.Application
Dim oWBook As Excel.Workbook
Dim oWSheet As Excel.Worksheet
Dim lFila As Long, iCol As Integer, i As Integer
Set oExcel = New Excel.Application
Set oWBook = oExcel.Workbooks.Add
Set oWSheet = oWBook.Worksheets(1)
Screen.MousePointer = vbHourglass
lFila = 1
iCol = 1
rs.MoveFirst
With oWSheet
' ponemos el nombre de los campos en la primera fila
For i = 0 To rs.Fields.Count - 1
.Cells(lFila, i + 1) = rs.Fields(i).Name
Next i
' cargamos los registros del recordset a partir de la siguiente fila
lFila = lFila + 1
.Cells(lFila, iCol).CopyFromRecordset rs
.Columns.AutoFit ' ajustamos el ancho de las columnas
End With
' mostramos la hoja
oExcel.Visible = True
' eliminamos el objeto
Set oExcel = Nothing
Screen.MousePointer = vbDefault
End Function
Para llamar a la funcin:
ExportExcel Adodc1.Recordset
1).Formula = Titulo
1).Font.Size = 18
2).Formula = "Codigo Intervencin"
3).Formula = "Aplicacin"
4).Formula = "Fecha de la Creacin"
5).Formula = "Hora de la Creacin"
6).Formula = "Fecha de la Recepcin"
7).Formula = "Hora de la Recepcin"
8).Formula = "Fecha de Comienzo"
9).Formula = "Hora de Comienzo"
10).Formula = "Situacin Entel"
11).Formula = "Situacin BK"
12).Formula = "Persona"
ApExcel.cells(2,
ApExcel.cells(2,
ApExcel.cells(2,
ApExcel.cells(2,
ApExcel.cells(2,
ApExcel.cells(2,
ApExcel.cells(2,
Rem Estos campos
ApExcel.cells(2,
ApExcel.cells(2,
ApExcel.cells(2,
ApExcel.cells(2,
ApExcel.cells(2,
ApExcel.cells(2,
ApExcel.cells(2,
ApExcel.cells(2,
ApExcel.cells(2,
ApExcel.cells(2,
ApExcel.cells(2,
)
ApExcel.cells(PosY, 21).Formula = ADODCBK.Recordset.Fields("Fecha_Cierre
")
ApExcel.cells(PosY, 22).Formula = ADODCBK.Recordset.Fields("Solucion")
ApExcel.cells(PosY, 23).Formula = ADODCBK.Recordset.Fields("Tipo_Solucio
n")
ApExcel.cells(PosY, 24).Formula = ADODCBK.Recordset.Fields("Persona_Cier
re")
ApExcel.cells(PosY, 25).Formula = ADODCBK.Recordset.Fields("Hora_Cierre_
Ext")
ApExcel.cells(PosY, 26).Formula = ADODCBK.Recordset.Fields("Fecha_Cierre
_Ext")
ApExcel.cells(PosY, 27).Formula = ADODCBK.Recordset.Fields("Hora_Cierre_
BK")
ApExcel.cells(PosY, 28).Formula = ADODCBK.Recordset.Fields("Fecha_Cierre
_BK")
ApExcel.cells(PosY, 29).Formula = ADODCBK.Recordset.Fields("Horas_Imputa
bles")
ApExcel.cells(PosY, 30).Formula = ADODCBK.Recordset.Fields("Horas_Emplea
das")
PosY = PosY + 1
'ApExcel.cells(3, 3).Formula = 100
ADODCBK.Recordset.MoveNext
Wend
' Aplica Formula
ApExcel.cells(3, 4).Formula = "=B3-C3"
' Hace una Seleccion de celdas y pone bordes de Color
ApExcel.Range("B33").BORDERS.Color = RGB(255, 0, 0)
'Kill ("D:\planTilla.XLS") ' Se carga el fichero de salida si existe
WB.Worksheets(1).SaveAs ("D:\" & Day & Month & Year & ".XLS")
'cierro el libro
WB.Close False
'Set ApExcel = Nothin
End Sub
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++
Dim xlApp como Excel.Nuevaaplicacin
XLapp.Visible = Verdadero
Dim XLwks como Excel.Libros = XLapp.Libros
Dim XLwk como Excel.Libro = XLwks.Agregar
Dim XLshts como Excel.Hojas = XLwk.Worksheets
Dim XLsht como Excel.Planilla = XLshts ("Hoja1")
XLsht.Rango ("A1"). Valor = Me.TextBox1.Text.ToString
XLsht.Rango ("A2"). Valor = Me.TextBox2.Text.ToString
XLsht.GuardarComo ("C:\excelBk.xlsx")
ApExcel.Workbooks.Add
'Poner Titulos
ApExcel.cells(1, 1).Formula = "Titulo de la Aplicacion"
ApExcel.cells(1, 1).Font.Size = 18
ApExcel.cells(2, 2).Formula = "Debe"
ApExcel.cells(2, 3).Formula = "Haber"
ApExcel.cells(2, 4).Formula = "Saldo"
ApExcel.cells(3, 2).Formula = 200
ApExcel.cells(3, 3).Formula = 100
' Aplica Formula
ApExcel.cells(3, 4).Formula = "=B3-C3"
' Hace una Seleccion de celdas y pone bordes de Color
ApExcel.RANGE("B3:D3").BORDERS.COLOR = RGB(255, 0, 0)
Set ApExcel = Nothing
End Sub