De Visual a Excel
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
gracias
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
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
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)
Hazme llegar el c贸digo de tu pase desde visual a excel (el que te sale desordenado)
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
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
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
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
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
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
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
seguire intentandolo ma帽ana
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")
Prueba a ver el resultado de:
ApplEx.Version
despu茅s del
Set ApplEx = CreateObject("excel.application")
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
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
