Ver Mensaje Individual
  #12 (permalink)  
Antiguo 21/08/2007, 09:35
javierarnalot
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4
Antigüedad: 17 años, 11 meses
Puntos: 0
Re: Como puedo exportar un DATAGRID A EXCEL? help!!!

el usar un ciclo for para recorrer la grilla (datagrid, flexgrid, spreadsheet, otra) es demasiado lento si hay muchos registros.

me parece mejor, copiar el contenido de la grilla y pegar en excel.


Código:
'ESTE CODIGO VA EN UN MODULO ESTANDAR

'DECLARA API QUE PERMITE BUSCAR DONDE ESTA EXCEL EN EL SISTEMA
Declare Function SearchTreeForFile Lib "imagehlp" _
(ByVal RootPath As String, ByVal InputPathName As String, _
ByVal OutputPathBuffer As String) As Long


Sub CopiarGrilla(Sp As vaSpread)

	'COPIA CONTENIDO DE SPREADSHEET AL PORTAPAPELES
	'EL CONCEPTO ES COPIAR LA SELECCION 
    Clipboard.Clear
    Sp.Row = 0
    Sp.Col = 1
    Sp.Row2 = Sp.MaxRows
    Sp.Col2 = Sp.MaxCols
    Clipboard.SetText Sp.Clip
End Sub

Sub AbrirExcel()

	'BUSCA Y ABRE EXCEL
    Dim tempStr As String, Ret As Long, xx
    tempStr = String(260, 0)
    Ret = SearchTreeForFile("c:\", "excel.exe", tempStr)
    If Ret <> 0 Then
	'SI "RET" ES DISTINTO DE CERO, ENCONTRO EXCEL Y LO ABRE MAXIMIZADO
        xx = Shell(Left$(tempStr, InStr(1, tempStr, Chr$(0)) - 1), vbMaximizedFocus)
    End If
End Sub


'ESTE CODIGO VA EN EL FORMULARIO EN EL EVENTO CLICK DE UN BOTON 
CON CAPTION "EXPORTAR A EXCEL"
sub cmd_exportaexcel_click()

	'COPIA EL CONTENIDO DE LA GRILLA
    Call CopiarGrilla(Sp_datos)

	'BUSCA Y ABRE EXCEL
    Call AbrirExcel

	'LE DICE A EXCEL QUE PEGUE EL CONTENIDO DEL PORTAPAPELES
    SendKeys "^(v)", True
end sub