De Visual a Excel

Pau
23 de Septiembre del 2008
Tengo un grid y en ese grid datos de una tabla, mediante un boton guardar, paso esos datos a un documento excel, pero en este documeno me salen los datos desordenados, sin separaciones y que queda horrible vamos que eso no se puede imprimir asi, pero si le meto en la colocacion del grid alguna separacion o algo asi me come los datos, que manera hay de hacer que los datos lleguen bien o hacer una plantilla en excel o alguna solucion por favor
gracias

Floyd
23 de Septiembre del 2008
Si lo que quieres es enviar datos tipo texto:
AreaHojaEx.Cells(Fila, Columna) = "'" & celdadelgrid
Los demás datos pueden ir con funciones como FORMAT:
AreaHojaEx.Cells(Fila, Columna) = "'" & FORMAT(celdadelgrid,"Standard")

Si quieres que las columnas en la hoja de excel tengan el ancho automático:
AreaHojaEx.Columns(Columna).AutoFit
Si quieres que la alineación dentro de la columna en excel sea centrada:
AreaHojaEx.Columns(Columna).HorizontalAlignment = xlHAlignRight

Donde AreaHojaEx está:
Dim AreaHojaEx As Excel.Worksheet

Cualquier cosa puedes ser más específico y trataré de ayudarte

Pau
23 de Septiembre del 2008
Y en donde meto todo ese codigo

Pau
23 de Septiembre del 2008
Porfa especificame un poquitito mas anda que no se por donde cogerlo

Floyd
23 de Septiembre del 2008
Indicaste que lo tienes en un botón.
Hazme llegar el código de tu pase desde visual a excel (el que te sale desordenado)

Pau
23 de Septiembre del 2008
Private Sub guardar_Click()
Dim fso As New FileSystemObject
Dim fichero As TextStream
Dim texto As String
For i = 0 To grimi.Rows - 1
For j = 0 To grimi.Cols - 1
texto = texto & grimi.TextMatrix(i, j) & " "
Next j
texto = texto & vbCrLf
Next i
control.Filter = "Archivos de Texto (*.txt)|*.txt|Todos los Archivos (*.*)|*.*"
control.FilterIndex = 2
control.ShowSave
Set fichero = fso.OpenTextFile(control.FileName, ForWriting)
fichero.Write texto
End Sub

ESTE ES EL CODIGO QUE TENGO EN EL BOTON GUARDAR, MEDIANTE EL CUAL GUARDO EL LISTADO EN UN DOCUMENTO EXCEL PERO ME APARECE DE MANERA QUE NO SE PUEDE IMPRIMIR PORQUE QUEDA MUY MAL

Floyd
23 de Septiembre del 2008
Agrega al proyecto la referencia: Microsoft Excel 9.0 Object Library
Nota: debes tener Excel 5.0 o superior

En el sub del botón vas a colocar:
'declaración de los objetos tipo Aplicación Excel, Libro y hoja
Dim ApplEx As Excel.Application
Dim AreaLibroEx As Excel.Workbook
Dim AreaHojaEx As Excel.Worksheet
'darle valores a los objetos excel
Set ApplEx = CreateObject("excel.application")
Set AreaLibroEx = ApplEx.Workbooks.Add
Set AreaHojaEx = AreaLibroEx.Worksheets(1)
'recorrer el grid y pasar los valores a cada celda de la hoja de excel
For i = 0 To grimi.Rows - 1
For j = 0 To grimi.Cols - 1
AreaHojaEx.Cells(i+1,j+1)=grimi.TextMatrix(i, j)
next
next

para darle formatos a la hoja
revisa el primer código que te envíe
conociéndo las columnas de la hoja de excel, puedes pasarle propiedades de centrado, ancho. etcétera.
Revisa:
AutoFit
HorizontalAlignment
ColumnWidth
para el objeto AreaHojaEx y su propiedad Columns

Para terminar, antes del end del sub del botón, te aconsejo y coloques:

Set ApplEx = Nothing
Set AreaLibroEx = Nothing
Set AreaHojaEx = Nothing

para así liberar un poco la memoria, sobre todo en los recursos del Office

Pau
23 de Septiembre del 2008
en la referencia en vez de la 9.0 tengo la 11.0 vale?

Pau
23 de Septiembre del 2008
no me hace nada dios mio.............. que desesperacion llevo un dia

Floyd
23 de Septiembre del 2008
Mirando el código que te indiqué, olvidé algo muy importante:
escribe:
ApplEx.Visible = True
para poder mostrar la hoja
esto va antes del
Set ApplEx = Nothing
Set AreaLibroEx = Nothing
Set AreaHojaEx = Nothing
es decir, al final de todos los valores y propiedades que hayas trabajado

Pau
23 de Septiembre del 2008
nada me sigue mostrando un desorden enorme

Pau
23 de Septiembre del 2008
perdonar me tengo que ir mañana estoy hasta las 2:30 me encantaria que me siguierais ayudando por favor espero que esteis muchas gracias
seguire intentandolo mañana

Floyd
23 de Septiembre del 2008
Calma, creo que la 11.0 es válida pero hay que investigar cuál es la versión inferior del Office que soporta.
Prueba a ver el resultado de:
ApplEx.Version
después del
Set ApplEx = CreateObject("excel.application")

Pau
23 de Septiembre del 2008
uso no valido de la propiedad

eso es lo que me dice

f
23 de Septiembre del 2008
colocalo como una pregunta para continuar o no con el traslado de los datos
Set ApplEx = CreateObject("excel.application")
If ApplEx.Version > "6.0" Then
Set AreaLibroEx = ApplEx.Workbooks.Add
Set AreaHojaEx = AreaLibroEx.Worksheets(1)
.
.
.
.
ApplEx.Visible = True
end if