** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Escribir en nuevo archivo rapido
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoEscribir en nuevo archivo rapido

 Responder Responder
Autor
Mensaje
beimar24 Ver desplegable
Asiduo
Asiduo


Unido: 11/Diciembre/2006
Localización: Colombia
Estado: Sin conexión
Puntos: 341
Enlace directo a este mensaje Tema: Escribir en nuevo archivo rapido
    Enviado: 06/Octubre/2010 a las 16:21
Buen dia compañeros del desarrollo
cree un codigo para que me cree un nuevo libro de excel
con los datos que consulto en una base de datos access
que esta en un servidor y me hace perfecto pero el unico proble es que demora demasiado creando el nuevo archivo
dejo el codigo Comentariado si alguien tiene una opinion de como mejorar la velocidad de escritura
cordial saludo

Private Sub Workbook_Open()

Dim strCadena As String
Dim sql As String
Dim conn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim Excel As Object
Dim Libro As Object
Dim Hoja As Object


'driver y ruta para conectarme a una base de datos de access 2003
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=\\jupiter\webcatal\abstracts.mdb;"

'linea para traer los datos de la base de datos que a la que me conecte en la parte de arriba
sql = "select * from abstracts;"
'utilizo el recorset
Set rst = New ADODB.Recordset
'le paso la consulta a un almacenador o recorset y los atributos adOpenDynamic, adLockPessimistic esto con el fin que se pueda recorrer de adelante hacia atras y vic
rst.Open sql, conn, adOpenDynamic, adLockPessimistic
'si el recorset esta vacio en el princio o en el final entonces
If rst.EOF = False And rst.BOF = False Then
'muevase al primer registro
rst.MoveFirst
'creo un archivo de excel con los datos del recorset
Set Excel = CreateObject("Excel.Application")
'creo el libro
Set Libro = Excel.Workbooks.Add
'creo todas las celdas
Set Hoja = Libro.Worksheets(1)
'le digo que en la celda numero a1 ponga un titulo con llamado codigo web
Hoja.Range("A1").Value = "Codigo_web"
'le digo que en la celda numero a1 ponga un titulo con llamado titulo
Hoja.Range("b1").Value = "titulo"
'a partir de la celda b2 copie todo lo que tenga el recorset
Hoja.Range("A2").CopyFromRecordset rst

' si todo a salido bien lanze un mensaje
' MsgBox rst!codigo_web & Chr(13) & rst!reseña, vbInformation, "Conexión a Access funcionando!"
'cierre el si
End If
'cierre el recorset
rst.Close
'limpie el recorset
Set rst = Nothing
'cierre la conexion
conn.Close
Set conn = Nothing

End Sub

TODO LO PUEDO EN JESUCRISTO QUE ME FORTALECE, JESUS EL MISMO AYER HOY Y SIEMPRE
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: Binghamton NY.
Estado: Sin conexión
Puntos: 3426
Enlace directo a este mensaje Enviado: 06/Octubre/2010 a las 16:50

Si solo vas a leer podrías empezar por usar adLockOptimistic, después de todo no vas a cambiar nada.

Por otro lado, yo primero crearía el libro y la hoja, después abriría la conexión ODBC.
El Búho es mi ídolo caido
Arriba
Jordi-Albert Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Abril/2006
Localización: Alemania
Estado: Sin conexión
Puntos: 4315
Enlace directo a este mensaje Enviado: 06/Octubre/2010 a las 17:28
en principio no le veo ningún problema.... a no ser que seleccionas todos los datos de la tabla ABSTRACTS y solo guardas en excel el primer registro

o bien es solo el ejemplo, o bien necesitas hacer un bucle para descargar todos los datos
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable