Muchas gracias
Puedes manipular una hoja de excel a tu gusto desde access.
Yo lo hago de la siguiente forma, si bien, hay mas y mejores, sin duda.
Private Sub Comando0_Click()
Dim libro As Workbook
Dim hoja, hoja2 As Worksheet
Dim nombre As String
Dim aux
nombre = "c:\archivo.xls"
Set objexcel = New Excel.Application
objexcel.Visible = False
With objexcel
Set libro = .Workbooks.Open(nombre)
Set hoja = .Worksheets("nombre_de_la_hoja_de_calculo")
End With
With hoja
.Cells(2, 1) = "Pongo algo en la celda 2,1"
.Cells(2, 2) = "Pongo algo en la celda 2,2"
aux = (.Cells(2, 4)) 'Recupera algo de la celda 2,4
End With
End If
libro.Saved = True 'le digo que guarde los cambios y no pregunte
libro.Close
Set hoja = Nothing
Set hoja2 = Nothing
Set objexcel = Nothing
End Sub
un saludo
leandro
"jorge" <jorgemu...@SPAMplanasa.com> escribió en el mensaje
news:eggpaZP...@tk2msftngp13.phx.gbl...
"leandro (2x3)" <dosx...@hotmail.com> escribió en el mensaje
news:OUeeujP...@TK2MSFTNGP10.phx.gbl...
"leandro (2x3)" <dosx...@hotmail.com> escribió en el mensaje
news:OUeeujP...@TK2MSFTNGP10.phx.gbl...
Desde el módulo de código, vete al menú Herramientas/Referencias y marca la
referencia Microsoft Excel Object Library
Con eso tendrá que funcionarte.
Un saludo.
GS
"jorge" <jorgemu...@SPAMplanasa.com> escribió en el mensaje
news:OIAN$9PXEH...@TK2MSFTNGP12.phx.gbl...
Saludos
He creado una base de datos con los campos elemento1 y elemento2. Y en el
formulario para introducir los datos, un botón para enviarlos a excel. Lo
envío y no da ningún error, pero no hay ningún cambio en la hoja de excel,
que está vacía. Por cierto, uso office XP. Os pongo el código de la prueba,
para ver si veis algún fallo:
___________________________________________________________________________
Option Compare Database
Dim rst As New ADODB.Recordset
Dim libro As Workbook
Dim hoja As Worksheet
Dim nombre As String
Private Sub Comando4_Click()
Dim fila As Integer
rst.Open "Select * from tabla1", CurrentProject.Connection,
adOpenStatic, adLockOptimistic
nombre = "c:\documents and settings\jmunarriz\mis
documentos\pruebaCombinada.xls"
Set objexcel = New Excel.Application
objexcel.Visible = False
Set libro = objexcel.workbooks.Open(nombre)
Set hoja = objexcel.worksheets("Hoja1")
rst.MoveFirst
fila = 2
While Not rst.EOF
hoja.Cells(fila, 2) = rst.Fields("elemento1")
hoja.Cells(fila, 3) = rst.Fields("elemento2")
fila = fila + 1
rst.MoveNext
Wend
libro.saved = True
libro.Close
rst.Close
Set hoja = Nothing
Set objexcel = Nothing
Set rst = Nothing
End Sub
____________________________________________________________________________
_______
Gracias.
"Gregorio Suarez" <pri...@miemail.es> escribió en el mensaje
news:O$ElYIQXE...@TK2MSFTNGP09.phx.gbl...
donde pone libro.save=true, esta diciendo que la hoja ya ha sido guardada
modificalo por libro.Save para que guarde los cambios
un saludo
leandro
"jorge" <jorgemu...@SPAMplanasa.com> escribió en el mensaje
news:uyZnRZQX...@TK2MSFTNGP12.phx.gbl...
Este es un tema interesante que creo no explotamos suficientemente en
nuestras aplicaciones ;) Te voy a dar mis notas obtenidas de la
experiencia:
*) Con la referencia "Microsoft Excel Object Library" activada, a través del
Examinador de objetos y la ayuda de Access puedes descubrir todos los
objetos con sus métodos y propiedades: Workbook, Worksheet, Range, etc.
*) Descubrí un método de Range muy interesante que es el COPYFROMRECORDSET,
que hace justamente eso, copia TODOS los registros de un recordset en un
rango especificado
*) Como truco-consejo, graba macros en Excel con lo que quieras hacer y
después las editas con el editor de Visual Basic para conocer las órdenes
correspondientes y traspasarlas a tu Access
Te paso un pequeñas instrucciones de ayuda, he copiado y pegado cosas (no
funcionará al pie de la letra) pero sí están las ideas básicas:
-----------------------------------------------------------------
Public Function genera_sorteos_excel()
Dim miApp As Excel.Application
Dim milibro As Excel.Workbook, mihoja As Excel.Worksheet
Dim mirango As Excel.Range, hoja As Excel.Worksheet
Dim miRS As ADODB.Recordset
On Error GoTo err_sorteosxls
Set miRS = New ADODB.Recordset
Set miApp = New Excel.Application
Set milibro = miApp.Workbooks.Add
Set mihoja = miApp.Worksheets.Add
miApp.Visible = True 'YO LO DEJO VISIBLE PARA QUE LA PEÑA FLIPE UN RATO
AL VERLO y tb.para depurar mejor
miSQL = "SELECT * FROM tabla"
miRS.Open miSQL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
If miRS.EOF = False Then
mihoja.Cells(3, 1).Value = "Nº Sorteo"
mihoja.Cells(3, 2).Value = "Nº idea"
mihoja.Cells(3, 3).Value = "Matrícula"
mihoja.Cells(3, 4).Value = "Empleado"
mihoja.Cells(3, 5).Value = "F. Entrada"
mihoja.Cells(3, 6).Value = "Título de la idea"
mihoja.Cells(3, 7).Value = "F. Resolución"
mihoja.Cells(3, 8).Value = "Ahorro estim."
mihoja.Cells(3, 9).Value = "Estado"
'NO HACE FALTA BUCLE CON EL CopyFromRecordset
Set mirango = mihoja.Range(mihoja.Cells(4, 2), mihoja.Cells(4 +
nregistros, 9))
miRS.MoveFirst
mirango.CopyFromRecordset miRS
mihoja.Columns("B:I").AutoFit
Set mirango = mihoja.Range(mihoja.Cells(4, 1), mihoja.Cells(3 +
nregistros, 9))
mirango.Font.Name = "Arial"
mirango.Font.Size = 9
mirango.HorizontalAlignment = xlHAlignCenter
'Alineación izda para el nombre del empleado
Set mirango = mihoja.Range(mihoja.Cells(4, 4), mihoja.Cells(4 +
nregistros, 4))
mirango.HorizontalAlignment = xlHAlignLeft
'Formato fecha para la fecha de entrada
Set mirango = mihoja.Range(mihoja.Cells(4, 5), mihoja.Cells(4 +
nregistros, 5))
mirango.NumberFormat = "dd-mm-yy"
'Formato euro para el ahorro estimado y formato condicional en blanco si
ahorro = 0
Set mirango = mihoja.Range(mihoja.Cells(4, 8), mihoja.Cells(4 + nideas,
8))
mirango.NumberFormat = "#,##0.00 $"
miRS.Close
Set miRS = Nothing
milibro.SaveAs auxmas
miApp.Quit
Set miApp = Nothing
Espero que te sirva
¡¡¡ SUERTE !!!
-----------
Julius
Zaragoza
"jorge" <jorgemu...@SPAMplanasa.com> escribió en el mensaje
news:uyZnRZQX...@TK2MSFTNGP12.phx.gbl...
P.D.:Que bien funciona este grupo.