Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Como puedo exportar un DATAGRID A EXCEL? help!!!

Estas en el tema de Como puedo exportar un DATAGRID A EXCEL? help!!! en el foro de Visual Basic clásico en Foros del Web. hola, llevo meses pegado, y no se como exportar un datagrid a Excel...
  #1 (permalink)  
Antiguo 18/04/2006, 22:52
 
Fecha de Ingreso: abril-2006
Mensajes: 5
Antigüedad: 18 años
Puntos: 0
Como puedo exportar un DATAGRID A EXCEL? help!!!

hola,

llevo meses pegado, y no se como exportar un datagrid a Excel
  #2 (permalink)  
Antiguo 19/04/2006, 13:25
Avatar de wiro  
Fecha de Ingreso: abril-2006
Mensajes: 72
Antigüedad: 18 años
Puntos: 0
No entiendo mucho lo que quieres con eso de exportar un datagrid a excel, pero bueno creo que lo que quieres es exportar el resultado de una consulta en donde el resultado lo estas vaciendo en un datagrid.

para ello puedes usar esta funcion a me me resulta muy bien.. espero y te sirva.

Public Sub Pase_Excel(Str_Sql As String, strConex As String)

Dim Int_Columnas As Integer
Dim Int_Filas As Integer
Dim rs_main As New ADODB.Recordset
Dim excelApp As Excel.Application
Dim excellibro As Excel.Workbook
Dim excelhoja As Excel.Worksheet
Dim Conn As ADODB.Connection

Set Conn = New ADODB.Connection
Conn.ConnectionString = strConex
Conn.Open

With rs_main
.CursorLocation = adUseClient
.CursorType = adOpenDynamic
.LockType = adLockBatchOptimistic
Set .ActiveConnection = Conn
.Open Str_Sql
End With

Set excelApp = New Excel.Application
Set excellibro = excelApp.Workbooks.Add
Set excelhoja = excellibro.ActiveSheet
Int_Columnas = rs_main.Fields.Count

For i = 1 To Int_Columnas
excelhoja.Cells(1, i) = rs_main.Fields(i - 1).Name
Next

If rs_main.RecordCount > 0 Then
rs_main.MoveFirst
For Int_Filas = 1 To rs_main.RecordCount
For j = 0 To Int_Columnas - 1
If IsNull(rs_main(j).Value) Then
excelhoja.Cells(Int_Filas + 2, j + 1) = ""
Else
excelhoja.Cells(Int_Filas + 2, j + 1) = CStr(rs_main(j).Value)
End If
Next
rs_main.MoveNext
Next
End If

excelApp.Visible = True

End Sub
  #3 (permalink)  
Antiguo 20/04/2006, 23:09
 
Fecha de Ingreso: abril-2006
Mensajes: 5
Antigüedad: 18 años
Puntos: 0
De acuerdo

holaaa, sii es exactamente lo que tu dices es lo que quiero hacer, pero necesito que me ayudes un poco mas, ya que recien estoy metiendome en Visual, mira mi query por ejemplo, seria la siguiente;

pero como llamo a la funcion que tu me diste?, segun este query

adodc1.RecordSource = " Select id, apellido, nombre From ALUMNO"
adodc1.Refresh


gracias!!!!
  #4 (permalink)  
Antiguo 24/04/2006, 13:30
Avatar de wiro  
Fecha de Ingreso: abril-2006
Mensajes: 72
Antigüedad: 18 años
Puntos: 0
pasar datos a excel

mira es muy sencillo....

lo unico que debes hacer es tomar la function que te he dado y la copias en el modulo principal de tu programa, para que desde ahi la llama tu codigo cada ves que necesites de ella.

ok si te fijas bien a la function le deberas pasar 2 parametros
el "Str_Sql" esta variable llevara la consulta que tiene en tu adodc1.RecordSource.
el otro parametro es la conexion y esta la almacenaras en la variable "strConex" para ayudarte mas lo aras de asi,

Call Pase_Excel(adodc1.RecordSource, adodc1.ConnectionString)

con este ultimo ejemplo te indico como llamaras a la function pasandole los parametros, luego de ello se debera abrir excel y mostrarte los datos que tienes en tu datagrid.

espero y te sirva, hasta pronto.

Wiro.
  #5 (permalink)  
Antiguo 24/04/2006, 18:32
 
Fecha de Ingreso: abril-2006
Mensajes: 5
Antigüedad: 18 años
Puntos: 0
De acuerdo pasar un datagrid a excel

hola gracias nuevamente, pero creo que me falta añadir un componente o algo, cuando corro el programa, lo coloque en un modulo, como tu me lo indicaste

me sale; "ERROR DE COMPILACION: No se ha definido el tipo definido por el usuario"


y me sale el error aqui;

Public Sub Pase_Excel(Str_Sql As String, strConex As String)

Dim Int_Columnas As Integer
Dim Int_Filas As Integer
Dim rs_main As New ADODB.Recordset
Dim excelApp As Excel.Application ' EN ESTA LINEA ME SALE EL ERROR
Dim excellibro As Excel.Workbook
Dim excelhoja As Excel.Worksheet
Dim Conn As ADODB.Connection


gracias nuevamente!!! espero tu respuesta
  #6 (permalink)  
Antiguo 25/04/2006, 07:01
 
Fecha de Ingreso: abril-2006
Mensajes: 5
Antigüedad: 18 años
Puntos: 0
De acuerdo bd protegida por contraseña

hola, ya encontre la referencia a la libreria, ya exporte!!! gracias, me resulto.....pero tengo un ultimo problema, como estoy trabajando en un BD ACCESS protegida por contraseña, al momento de llamar a la funcion me sale el error:

ERROR -21447467259 Controlador ODBC MIcrosoft Access No es una contraseña valida

y el error me sale en la linea de codigo; Conn.Open


Set Conn = New ADODB.Connection
Conn.ConnectionString = strConex
Conn.Open

creo que por aqui tengo que colocar el password o alguna referencia, pero como?

gracias, una vez mas
  #7 (permalink)  
Antiguo 25/04/2006, 13:31
Avatar de wiro  
Fecha de Ingreso: abril-2006
Mensajes: 72
Antigüedad: 18 años
Puntos: 0
datagrid a excell

pues mira... que no sabia que estabas usando access como manejador de BD, te aconsejo que dejes access y emigres a otra admon de BD, talves SQLServer.

ahora el ejemlpo que te pase es para una conexion a un servidor SQL Server, el error que te esta dando es por que en la linea de conexion te hace falta especificarle que password de dicha BD.

creo que va algo asi.

Provider=Microsoft.Jet.OLEDB.4.0;Password=wiro;Data Source=C:\SIS\polizas.mdb;Persist Security Info=True

bueno espero y puedas resolver con esto.
  #8 (permalink)  
Antiguo 25/04/2006, 18:46
 
Fecha de Ingreso: abril-2006
Mensajes: 5
Antigüedad: 18 años
Puntos: 0
De acuerdo gracias!!

gracias compadre, te pasaste ahora todo funciona OK, GRACIAS POR TU AYUDA, BUENA ONDA!!
  #9 (permalink)  
Antiguo 18/01/2007, 17:57
 
Fecha de Ingreso: enero-2007
Mensajes: 1
Antigüedad: 17 años, 3 meses
Puntos: 0
¿Como puedo exportar un DATAGRID A EXCEL?

Hola WIRO, soy nuevo en el foro, tengo la misma duda que tu tenías antes sobre como exportar los datos de un DataGrid de Visual Basic 6.0 a Access, si se puede y no es mucha molestia, me gustaría que pusieras como te quedó todo el código, porque la verdad ya me dolió la cabeza, llevo como 9 horas tratando de hacerlo y no consigo nada y si me hurge hacer eso, espero tu respuesta o la respuesta de quien lo tenga GRACIAS.
  #10 (permalink)  
Antiguo 22/05/2007, 14:41
 
Fecha de Ingreso: mayo-2007
Mensajes: 3
Antigüedad: 17 años
Puntos: 0
datagrid a excell

hola wiro no se si es mucha molestia si me puedes enviar el codigo completo de como pasar datos de un grid a excel porque la verdad en eso estoy en nada agradeceria tu respuesta gracias .
  #11 (permalink)  
Antiguo 22/05/2007, 15:03
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Re: Como puedo exportar un DATAGRID A EXCEL? help!!!

aca tenes la respuesta:

http://www.recursosvisualbasic.com.a...grid-excel.htm

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #12 (permalink)  
Antiguo 21/08/2007, 09:35
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4
Antigüedad: 17 años, 4 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
  #13 (permalink)  
Antiguo 14/09/2007, 19:00
 
Fecha de Ingreso: septiembre-2007
Mensajes: 1
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: bd protegida por contraseña

Hola amigos WIRO/FAZUA no se si me podrian decir cual es la libreria a la que haces referencia, la verdad en esa parte me perdi jijiji una ayuda pues tengo el mismo error en mi codigo, te lo agradecere mucho.

Bye besitos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:19.