Visual Basic - datagrid a excel

Life is soft - evento anual de software empresarial
 
Vista:

datagrid a excel

Publicado por Marco (24 intervenciones) el 19/01/2005 13:53:43
con esté codigo bajo mi data grid a excel mediante un botón, lo que pasa que cuando lo bajo por 1era vez todo bien pero si lo quiero bajar por segunda se queda pegado el excel, muchas gracias por las sugerencias.

Private Sub cmdtoexcell_Click()
Dim wkbNew As Excel.Workbook
Dim wkbSheet As Excel.Worksheet
Dim Rng As Excel.Range
If Dir("C:\movimiento.xls") <> "" Then 'Si Existe el Archivo
Kill "C:\movimiento.xls" 'Lo Eliminamos
End If
Set wkbNew = Workbooks.Add
wkbNew.SaveAs "C:\movimiento.xls"
Set wkbSheet = wkbNew.Worksheets(1)
Set Rng = wkbSheet.Range("A1:" + Chr(DataGrid1.Columns.Count + 64) + CStr(Adodc1.Recordset.RecordCount))
DataGrid1.Row = 0 'se coloca el cursor en la primera fila
DataGrid1.Refresh
For I = 0 To Adodc1.Recordset.RecordCount - 1
For j = 0 To DataGrid1.Columns.Count - 1
DataGrid1.Col = j
'DataGrid1.Row = I 'aqui se cae
Rng.Range(Chr(j + 1 + 64) + CStr(I + 1)) = DataGrid1.Text
Next j
Adodc1.Recordset.MoveNext
Next I
'Close and save the file
wkbNew.Close True
'Si queremos Abrir el Archivo
Dim MyValue
MyValue = Shell("rundll32.exe url.dll,FileProtocolHandler " & "C:\movimiento.xls", vbMaximizedFocus)

End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:datagrid a excel

Publicado por Rocio (3 intervenciones) el 20/01/2005 15:04:08
Marco tengo el mismo problema que tu.....al parecer el recordset solamente "llega" hasta las filas que muestra el datagrid en pantalla. por ejemplo, si en tiempo de ejcucion tu datagrid te muestra 15 filas adodc1.recordset.movenext no podra pasar de la fila 15....es es el problema...pero aun no lo he solucionado. si tu lo hiciste porfavor escribeme, pq es urgente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:datagrid a excel

Publicado por Rocio (3 intervenciones) el 20/01/2005 15:27:10
usa esto:

With Data.Recordset
If .BOF = False Then .MoveFirst
If .EOF = False Then
Do Until .EOF
For i = 1 To .Fields.Count
Rng.Cells(.AbsolutePosition, i) = .Fields(i - 1)
Next i
.MoveNext
Loop
End If
End With

con eso se arrgegla y exporta cuantos registros quieras....el problema es q no exporta bien las fechas XD
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:datagrid a excel

Publicado por Marco (24 intervenciones) el 20/01/2005 17:19:18
hola Rocio la verdad no me resulta, me encantaria si me pudieras facilitar todo tú codigo de bajar el data grid a excel.
muchas gracias
Marco Antonio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:datagrid a excel

Publicado por Rocio (3 intervenciones) el 20/01/2005 18:10:29
te acabo de mandar el codigo a tu correo ;)
es muy largo para escribirlo aqui. si sabes como asignar el formato de los datos a cada columna de excel por favor me lo haces saber
salu2
Rocio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:datagrid a excel

Publicado por carlos (101 intervenciones) el 21/01/2005 17:15:34
aqui tengo un codigo que creo les puede servir

-----------------------------------------------------------------------------------------------------------
'empezar a llenar con datos del recordset
Dim EjeX As Integer
Dim EjeY As Integer
Dim PosRecordset As Integer
EjeX = 1 'posiciones de la planillade excel donde comenzaran
EjeY = 2 'a exportarse los datos
PosRecordset = 0
Adodc1.Recordset.MoveFirst
Do While Adodc1.Recordset.EOF <> True
If EjeX = 22 Then
Adodc1.Recordset.MoveNext 'pasa al siguiente registro
EjeY = EjeY + 1 'ya que solo son 22 campos
EjeX = 1
Else
If PosRecordset < 21 Then
ApExcel.cells(EjeY, EjeX).Formula = Adodc1.Recordset.Fields(PosRecordset) ' exporta el campo del
PosRecordset = PosRecordset + 1 'recordset que corresponde
EjeX = EjeX + 1
Else
PosRecordset = 0
End If
End If
Loop

ApExcel.Visible = True
Set ApExcel = Nothing
------------------------------------------------------------------------------------------
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar