• Domingo 22 de Diciembre de 2024, 19:50

Autor Tema:  Re: Brroz una consulta  (Leído 1178 veces)

krlos02

  • Miembro activo
  • **
  • Mensajes: 62
    • Ver Perfil
Re: Brroz una consulta
« en: Jueves 13 de Noviembre de 2003, 16:18 »
0
vi un ejemplo de un codigo  que pusiste para transportar de un flexgrid a excel, mi pregunta es se puede hacer lo mismo con un datagrid?, y si es asi, como yo controlo que por ejejmplo a la celda "B1" le asigne una "A", a la "B2" una "B" y asi, es decir controlar que a cada celda le llege el dato preciso.
                              gracias

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Brroz una consulta
« Respuesta #1 en: Jueves 13 de Noviembre de 2003, 17:13 »
0
Hola Krlos02.

Perdona, pero el ejemplo al que supongo que te refieres guarda y carga datos en un archivo de texto.
El último ejemplo que puse hace lo mismo pero el archivo de texto es delimitado, se podría abrir con excel (*.csv).

De todas formas, para lo que tú quieres hacer, puedes manejar los datos del datagrid de manera similar:
Row Establece la fila
Col Estable la columna
Text Da el valor de la celda

Y como parece que hay mucho interés en conseguir código para insertar datos en una hoja de cálculo, y pocas ganas de buscar, pues me voy a tirar el rollito con un ejemplo sencillo de cómo cargar los datos de un recordset en una hoja de excel.

Private Function SaveRsXls(Byval rs1 as Recordset) As Boolean

On Error Goto Err_SaveRs

Dim objApp As Object
Dim objWb AsObject
Dim objSh As Object
Dim objRng As Object
Dim var1() As Variant, lngNFld as Long
Dim lngNRcd as long

Set objApp = CreateObject(Excel.Application")
Set objWb = objApp.WorkBooks.Add
Set objSh = objWb.ActiveSheet

ReDim var1(1, rs1.Fields.Count)
   
For lngNFld = 0 To rs1.Fields.Count - 1
var1(0, lngNFld) = rs1.Fields(lngNFld).Name
Next lngNFld
   
Set objRng = objSh.Range("A1").Resize(1, rs1.Fields.Count)
objRng.Value = var1
   
rs1.MoveFirst
   
Do Until rs1.EOF
For lngNFld = 0 To rs1.Fields.Count - 1
var1(0, lngNFld) = rs1.Fields(lngNFld).Value
Next lngNFld
lngNRcd = lngNRcd + 1
Set objRng = objSh.Range("A" & lngNRcd + 1).Resize(1, rs1.Fields.Count)
objRng.Value = var1
rs.MoveNext
Loop

objSh.Name = "Nueva hoja"
objWb.SaveCopyAs "NombreDeLibro.XlsobjWb.Saved = True

SaveRsXls = True

Exit_SaveRs:
On Error Resume Next
objApp.Close
objApp.Quit
Set objApp  = Nothing
Set objWb = Nothing
Set objSh = Nothing
Set objRg = Nothing
Exit Function

Err_SaveRs:
MsgBox Err.Description
Resume Exit_SaveRs

End Function


Ahí está, ojo que está escrito al vuelo y lo mismo va algún gazapo... pero es para que sirva de ejemplo y para que lo intentéis comprender, no para copiar tal cual y que funcione. Además de haber otras formas para hacerlo.

Suerte.
Chao.

P.D. Acabo de hacer la prueba buscando en google por VB Excel y aparecen cantidad de sitios desde los que obtener ejemplos... sólo hay que tomarse la molestia y ya está.

krlos02

  • Miembro activo
  • **
  • Mensajes: 62
    • Ver Perfil
Re: Brroz una consulta
« Respuesta #2 en: Jueves 13 de Noviembre de 2003, 20:20 »
0
Primero y antes que nada, Gracias por la respuesta.
Segundo: si he buscado y buscando en el google me aparecen paginas de foros con preguntas similares a las mias y sin responder, y tambien ha pasado que no he sabido buscar bien, mi pregunta apuntaba  a como controlar que cada celda de la hoja recibiera el dato preciso, ya que crear libroe y todo eso ya lo averigue, lo que pasa es que en la hoja debo insertar valores en campos especificos, era eso solamente

De nuevo te doy las gracias y perdona si mi pregunta daba a entender que no habia buscado, voy a revisar el codigo y tomar lo que necesito:beer:

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Brroz una consulta
« Respuesta #3 en: Viernes 14 de Noviembre de 2003, 09:21 »
0
Hola krlos02.

Estudia el código y fíjate en las partes en que se usa objRng con esto se obtiene un rango de celdas que forman una matriz bidimensional (FilaDeRango, ColumnaDeRango). Otra forma que en tu caso podría ser más efectiva es usar la propiedad Cells del objecto WorkSheet (objSh), funciona como un rango pero comprendiendo todas las celdas de la hoja. Por ejemplo:

ObjSh.Cells(10,3)

hace referencia a la celda C10.

Espero que con esto soluciones tu problema.

Abur.