Exportar un informe a excel ?

15/10/2003 - 11:07 por Bluey | Informe spam
Hola a todos, alguien sabe como puede exportar un informe a excel?
Tengo un informe con varios campos y registro y necesito pasar todo eso a
excel para luego enviarlo por mail y que el destinatario lo pueda modificar.
Esto lo necesito hacer por codigo, es decir que al pinchar en un boton me lo
haga

Gracias

Preguntas similare

Leer las respuestas

#16 José Mª Fueyo
18/10/2003 - 01:56 | Informe spam
No me había fijado nunca, pero lo tendré en cuenta.
Gracias Naufrag.

Salu2.
José Mª Fueyo
[MS-MVP Access]

¡Urgente! Boletín de seguridad MS03-039
http://www.microsoft.com/spain/tech...9-USER.asp

¡Actualizate!
Respuesta Responder a este mensaje
#17 Juan M. Afan de Ribera
18/10/2003 - 07:52 | Informe spam
Sí, eso es cierto. Todo lo que sean constantes de la aplicación, necesitan o
bien hacerlo como tú dices o bien marcar una referencia a la librería de
objetos de la aplicación.

En mi opinión y dado lo mal que lleva Access esto de las referencias, lo
mejor es emplear el CreateObject y averiguar el valor de esas constantes.
Para ello, hay que ir al editor de Visual Basic, activar la ventana del
Examinador de objetos, y en la opción de buscar, escribir el nombre de esa
constante. Al pie de esa ventana aparecerá el tipo de dato y valor asignado
a esa variable.

Yo siempre he dicho que aprendí mucho utilizando la grabadora de macros. Lo
único que no te hace son los bucles y condiciones, pero te enseña mucho. Eso
sí, escribe demasiado, la mayoría de las veces, hay que ir y recortar un
montón de cosas que no vas a usar.

Saludos desde Barcelona
Juan M. Afan de Ribera
<MVP Ms Access>
http://www.juanmafan.tk
http://www.clikear.com/webs4/juanmafan


"Naufrag" escribió en el mensaje
news:
Hola, grupo.

Me permitís que haga una pequeña apreciación?

Cuando se usa la grabadora de macros para hacer lo que dice Juan M. Afan,
habreis de tener en cuenta que ésta pone determinadas constantes del


propio
Word o Excel, del tipo vdLoquesea. Es necesario pasar esa constante a su
valor para que funcione a través de .application. Pongo un ejemplo.

Esto no funcionaba.

Set miword = CreateObject("Word.Application")
Set midoc = miword.Application.Documents.Open("c:\contrato.doc")
miword.Visible = True
With miword.Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "CadenaFirma1"
.Replacement.Text = firmaCR
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With

Pero en cambio, esto si funcionaba

Set miword = CreateObject("Word.Application")
Set midoc = miword.Application.Documents.Open("c:\.doc")
miword.Visible = True
With miword.Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "CadenaFirma1"
.Replacement.Text = firmaCR
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=2
End With

Notad el cambio en la penúltima línea (.Execute Replace:=)

Os puede ahorrar muchos quebraderos de cabeza.

Naufrag

Reus - Tarragona

www.naufrag.com (En consrucción)

"Juan M. Afan de Ribera" escribió en el mensaje
news:
> Eva, ¿te has mirado estas dos direcciones?
>
> http://www.clikear.com/webs4/juanma...aexcel.htm
> http://www.clikear.com/webs4/juanma...aexcel.htm
>
> aquí explico como exportar tablas o consultas (compiladas o de


sentencias
> sql) a libros de excel. Yo lo hago con DAO (por aquello de la costumbre)
> pero se hace igual de fácil con ADO.
>
> Una recomendación: tanto Excel como Word tienen una herramienta llamada
> "Grabadora de macros", que lo que hace es tomar nota de los pasos que


das
> mientras graba y lo va escribiendo en código VBA. De esta manera es lo


más
> sencillo del mundo decir: ¿cómo haría esto o lo otro con código?. Pues
nada,
> le das a la "Grabadora de macros", haces lo que tengas que hacer, paras


la
> grabación, te vas al módulo donde se haya grabado la "macro"... et


voilà,
ya
> tienes todo el código del mundo y seguro que un poco más.
>
> Después, si quieres ejecutar estas cosas desde Access, hay que tener en
> cuenta que todo el código de cualquier programa de Office, se ejecuta a
> través del objeto Application, que representa al programa en sí mismo.
> Entonces, sólo tienes que crear un objeto Application de la clase que
vayas
> a usar, por ejemplo:
>
> Dim app As Excel.Application
>
> Set app = New Excel.Application
> o
> Dim app As Word.Application
>
> Set app = New Word.Application
> o
> Dim app As Access.Application
>
> Set app = New Access.Application
>
> o hacerlo de esta otra forma (para no tener que crear una referencia a


la
> librería correspondiente)
>
> Dim app as object
>
> Set app = CreateObject("Excel.Application")
>
> ...
>
> una vez tengas ese objeto application, sólo tienes que adjudicarle las
> acciones que has grabado con la grabadora de macros, por ejemplo, si la
> grabadora de macros te ha puesto algo como
>
> ActiveCell.FormulaR1C1 = "columna1"
> Range("B1").Select
> ActiveCell.FormulaR1C1 = "columna2"
> Range("C1").Select
> ActiveCell.FormulaR1C1 = "columna3"
> Range("A3").Select
> ActiveCell.FormulaR1C1 = "valor1"
> Range("B3").Select
> ActiveCell.FormulaR1C1 = "valor2"
> Range("C3").Select
> ActiveCell.FormulaR1C1 = "valor3"
>
> tú, desde Access escribes esto otro, utilizando lo anterior:
>
> Dim app As Object
>
> Set app = CreateObject("Excel.application")
> app.Visible = True
>
> app.workbooks.Add
>
> app.ActiveCell.FormulaR1C1 = "columna1"
> app.Range("B1").Select
> app.ActiveCell.FormulaR1C1 = "columna2"
> app.Range("C1").Select
> app.ActiveCell.FormulaR1C1 = "columna3"
> app.Range("A3").Select
> app.ActiveCell.FormulaR1C1 = "valor1"
> app.Range("B3").Select
> app.ActiveCell.FormulaR1C1 = "valor2"
> app.Range("C3").Select
> app.ActiveCell.FormulaR1C1 = "valor3"
>
> Set app = Nothing
>
> y ya verás que chulo queda :-)
>
> joer! hoy se me ha soltado el dedo de tanto escribir.
>
> Saludos desde Barcelona
> Juan M. Afan de Ribera
> <MVP Ms Access>
> http://www.juanmafan.tk
> http://www.clikear.com/webs4/juanmafan
>
>
> "Eva Etxebeste" <eetxebesteARROBAhotmail.com> escribió en el mensaje
> news:
> > Jesús, ¿tienes algún ejemplo _creando_ el libro Excel desde Access?
Estoy
> > busca que te busca, prueba que te prueba y no doy con la solución.
> >
> > Un saludo
> > Eva Etxebeste
> > [MS MVP]
> > "Jesus" escribió en el mensaje
> > news:
> > > A ver si te vale esto. Si no, igual encuentras mas cosas en mi


pagina:
> > > http://www.melodysoft.com/cgi-bin/f...=ATPACCESS
> > >
> > > Enviar datos a Excel y formatear celdas con OLE
> > >
> > > Utilizando automatización OLE en MS Access 2.0 podemos enviar
> información
> > a
> > > una hoja de cálculo de MS Excel , formatear celdas, imprimir hojas
etc.
> > > Podemos iniciar una comunicación con la otra aplicación que sólo
> podremos
> > > utilizar en nuestro código (durante el proceso, el usuario no vería
una
> > > tarea de MS Excel).
> > > A continuación veremos un ejemplo que nos permite enviar un dato a


una
> > celda
> > > de una hoja de Excel 5.0 previamente creada, así como poner fuente
Arial
> > > Negrita 12 a esa celda y alineación centrada a toda la columna.
> > > A esta función le pasaremos tres parámetros, el dato que queremos
mandar
> y
> > > la fila y columna de la celda de la hoja de cálculo donde queremos
> > insertar
> > > la información.
> > > En un módulo nuevo tecleamos lo siguiente:
> > >
> > > Function ole_excel (x, i, j)
> > > Dim Hoja As Object
> > > 'Con la función GetObject iniciamos la comunicación con la
> > > 'hoja OLE.XLS de MS Excel 5.0.
> > > Set Hoja = GetObject("c:\ejemplo\ole.xls", "excel.sheet")
> > > 'Con la propiedad value del método Cells, podemos insertar
> > > 'un dato en una celda específica.
> > > Hoja.Cells(i, j).value = x
> > > 'Las tres líneas siguientes cambian las propiedades Nombre
> > > 'Negrita y tamaño de la fuente de una celda.
> > > Hoja.Cells(i, j).Font.Name = "Arial"
> > > Hoja.Cells(i, j).Font.Bold = True
> > > Hoja.Cells(i, j).Font.Size = 12
> > > 'Utilizando el método column podemos hacer referencia a una
> > > 'columna de una hoja, y con la propiedad HorizontalAlignment,
> > > 'podemos cambiar la alineación horizontal de la misma.
> > > Hoja.Columns(j).HorizontalAlignment = 3
> > > 'Las siguientes líneas guardan la hoja y cierran la


comunicación
> > > 'con Excel. Para poder guardar la hoja es necesario activarla
> > > 'con la propiedad visible, aunque el usuario no verá ninguna
> > > 'sesión de Excel.
> > > Hoja.Application.windows("ole.xls").visible = True
> > > Hoja.Application.ActiveWorkbook.Save
> > > Hoja.Application.[Quit]
> > > End Function
> > >
> > > Supongamos que tenemos un formulario que contiene 3 campos donde
> aparecen
> > el
> > > dato que queremos insertar en la hoja de cálculo, la columna y la
fila,
> > > llamados "Dato", "Fila" y "Columna" respectivamente, y queremos


pulsar
> un
> > > botón que ejecute la función anterior, debemos teclear lo siguiente


en
> el
> > > evento "Al hacer click" del botón:
> > >
> > >
> > > Dim y
> > > y=ole_excel([dato],[Fila],[Columna])
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#18 Eva Etxebeste
18/10/2003 - 11:28 | Informe spam
Ay co*e! Ná hijo, que la despistada esta vez he sido yo :( Tú sigue leyendo
igual de bien, y yo me voy a ahora mismo a comprarme una gafas!!!! Perdone
usté caballero, los viernes se me suelen trastocar las ideas un poquito (el
resto de los días también, pero no lo digo que luego todo se sabe)

Un saludo :)
Eva Etxebeste
[MS MVP]
"Juan M. Afan de Ribera" escribió en el mensaje
news:
Eva, es que no me entero de na. ¿Qué quieres decir con lo de que el


problema
está en_crear_un_nuevo_libro? En uno de los ejemplos de exportación que te
comentaba, lo primero que hace la rutina es abrir Excel y crear un libro
nuevo con la instrucción

Application.Workbooks.Add

¿te refieres a eso o es que yo sigo despistao como siempre? (no es coña,


soy
muy, muy despistado y no me entero de muchas cosas a veces)

Saludos desde Barcelona
Juan M. Afan de Ribera
<MVP Ms Access>
http://www.juanmafan.tk
http://www.clikear.com/webs4/juanmafan


"Eva Etxebeste" <eetxebesteARROBAhotmail.com> escribió en el mensaje
news:
> Otro precipitao como yo!!!! ;)))))
>
> Japitxu, léete otra vez mi mensaje, que el problema está en _crear_ un
nuevo
> libro.
> Eva Etxebeste
> [MS MVP]
> ***IMPORTANTE*** Microsoft Security Bulletin MS03-039
> http://www.microsoft.com/security/s...03-039.asp
>
> "Juan M. Afan de Ribera" escribió en el mensaje
> news:
> > Eva, ¿te has mirado estas dos direcciones?
> >
> > http://www.clikear.com/webs4/juanma...aexcel.htm
> > http://www.clikear.com/webs4/juanma...aexcel.htm
> >
> > aquí explico como exportar tablas o consultas (compiladas o de
sentencias
> > sql) a libros de excel. Yo lo hago con DAO (por aquello de la


costumbre)
> > pero se hace igual de fácil con ADO.
> >
> > Una recomendación: tanto Excel como Word tienen una herramienta


llamada
> > "Grabadora de macros", que lo que hace es tomar nota de los pasos que
das
> > mientras graba y lo va escribiendo en código VBA. De esta manera es lo
más
> > sencillo del mundo decir: ¿cómo haría esto o lo otro con código?. Pues
> nada,
> > le das a la "Grabadora de macros", haces lo que tengas que hacer,


paras
la
> > grabación, te vas al módulo donde se haya grabado la "macro"... et
voilà,
> ya
> > tienes todo el código del mundo y seguro que un poco más.
> >
> > Después, si quieres ejecutar estas cosas desde Access, hay que tener


en
> > cuenta que todo el código de cualquier programa de Office, se ejecuta


a
> > través del objeto Application, que representa al programa en sí mismo.
> > Entonces, sólo tienes que crear un objeto Application de la clase que
> vayas
> > a usar, por ejemplo:
> >
> > Dim app As Excel.Application
> >
> > Set app = New Excel.Application
> > o
> > Dim app As Word.Application
> >
> > Set app = New Word.Application
> > o
> > Dim app As Access.Application
> >
> > Set app = New Access.Application
> >
> > o hacerlo de esta otra forma (para no tener que crear una referencia a
la
> > librería correspondiente)
> >
> > Dim app as object
> >
> > Set app = CreateObject("Excel.Application")
> >
> > ...
> >
> > una vez tengas ese objeto application, sólo tienes que adjudicarle las
> > acciones que has grabado con la grabadora de macros, por ejemplo, si


la
> > grabadora de macros te ha puesto algo como
> >
> > ActiveCell.FormulaR1C1 = "columna1"
> > Range("B1").Select
> > ActiveCell.FormulaR1C1 = "columna2"
> > Range("C1").Select
> > ActiveCell.FormulaR1C1 = "columna3"
> > Range("A3").Select
> > ActiveCell.FormulaR1C1 = "valor1"
> > Range("B3").Select
> > ActiveCell.FormulaR1C1 = "valor2"
> > Range("C3").Select
> > ActiveCell.FormulaR1C1 = "valor3"
> >
> > tú, desde Access escribes esto otro, utilizando lo anterior:
> >
> > Dim app As Object
> >
> > Set app = CreateObject("Excel.application")
> > app.Visible = True
> >
> > app.workbooks.Add
> >
> > app.ActiveCell.FormulaR1C1 = "columna1"
> > app.Range("B1").Select
> > app.ActiveCell.FormulaR1C1 = "columna2"
> > app.Range("C1").Select
> > app.ActiveCell.FormulaR1C1 = "columna3"
> > app.Range("A3").Select
> > app.ActiveCell.FormulaR1C1 = "valor1"
> > app.Range("B3").Select
> > app.ActiveCell.FormulaR1C1 = "valor2"
> > app.Range("C3").Select
> > app.ActiveCell.FormulaR1C1 = "valor3"
> >
> > Set app = Nothing
> >
> > y ya verás que chulo queda :-)
> >
> > joer! hoy se me ha soltado el dedo de tanto escribir.
> >
> > Saludos desde Barcelona
> > Juan M. Afan de Ribera
> > <MVP Ms Access>
> > http://www.juanmafan.tk
> > http://www.clikear.com/webs4/juanmafan
> >
> >
> > "Eva Etxebeste" <eetxebesteARROBAhotmail.com> escribió en el mensaje
> > news:
> > > Jesús, ¿tienes algún ejemplo _creando_ el libro Excel desde Access?
> Estoy
> > > busca que te busca, prueba que te prueba y no doy con la solución.
> > >
> > > Un saludo
> > > Eva Etxebeste
> > > [MS MVP]
> > > "Jesus" escribió en el mensaje
> > > news:
> > > > A ver si te vale esto. Si no, igual encuentras mas cosas en mi
pagina:
> > > > http://www.melodysoft.com/cgi-bin/f...=ATPACCESS
> > > >
> > > > Enviar datos a Excel y formatear celdas con OLE
> > > >
> > > > Utilizando automatización OLE en MS Access 2.0 podemos enviar
> > información
> > > a
> > > > una hoja de cálculo de MS Excel , formatear celdas, imprimir hojas
> etc.
> > > > Podemos iniciar una comunicación con la otra aplicación que sólo
> > podremos
> > > > utilizar en nuestro código (durante el proceso, el usuario no


vería
> una
> > > > tarea de MS Excel).
> > > > A continuación veremos un ejemplo que nos permite enviar un dato a
una
> > > celda
> > > > de una hoja de Excel 5.0 previamente creada, así como poner fuente
> Arial
> > > > Negrita 12 a esa celda y alineación centrada a toda la columna.
> > > > A esta función le pasaremos tres parámetros, el dato que queremos
> mandar
> > y
> > > > la fila y columna de la celda de la hoja de cálculo donde queremos
> > > insertar
> > > > la información.
> > > > En un módulo nuevo tecleamos lo siguiente:
> > > >
> > > > Function ole_excel (x, i, j)
> > > > Dim Hoja As Object
> > > > 'Con la función GetObject iniciamos la comunicación con la
> > > > 'hoja OLE.XLS de MS Excel 5.0.
> > > > Set Hoja = GetObject("c:\ejemplo\ole.xls", "excel.sheet")
> > > > 'Con la propiedad value del método Cells, podemos insertar
> > > > 'un dato en una celda específica.
> > > > Hoja.Cells(i, j).value = x
> > > > 'Las tres líneas siguientes cambian las propiedades Nombre
> > > > 'Negrita y tamaño de la fuente de una celda.
> > > > Hoja.Cells(i, j).Font.Name = "Arial"
> > > > Hoja.Cells(i, j).Font.Bold = True
> > > > Hoja.Cells(i, j).Font.Size = 12
> > > > 'Utilizando el método column podemos hacer referencia a una
> > > > 'columna de una hoja, y con la propiedad


HorizontalAlignment,
> > > > 'podemos cambiar la alineación horizontal de la misma.
> > > > Hoja.Columns(j).HorizontalAlignment = 3
> > > > 'Las siguientes líneas guardan la hoja y cierran la
comunicación
> > > > 'con Excel. Para poder guardar la hoja es necesario


activarla
> > > > 'con la propiedad visible, aunque el usuario no verá ninguna
> > > > 'sesión de Excel.
> > > > Hoja.Application.windows("ole.xls").visible = True
> > > > Hoja.Application.ActiveWorkbook.Save
> > > > Hoja.Application.[Quit]
> > > > End Function
> > > >
> > > > Supongamos que tenemos un formulario que contiene 3 campos donde
> > aparecen
> > > el
> > > > dato que queremos insertar en la hoja de cálculo, la columna y la
> fila,
> > > > llamados "Dato", "Fila" y "Columna" respectivamente, y queremos
pulsar
> > un
> > > > botón que ejecute la función anterior, debemos teclear lo


siguiente
en
> > el
> > > > evento "Al hacer click" del botón:
> > > >
> > > >
> > > > Dim y
> > > > y=ole_excel([dato],[Fila],[Columna])
> > > >
> > > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#19 Juan M. Afan de Ribera
18/10/2003 - 11:53 | Informe spam
Ay mare! pues bienvenida al club de los
"perdedores_de_neuronas_por_un_tubo_y_demás_desastres_cotidianos" ;-)

Saludos desde Barcelona
Juan M. Afan de Ribera
<MVP Ms Access>
http://www.juanmafan.tk
http://www.clikear.com/webs4/juanmafan


"Eva Etxebeste" <eetxebesteARROBAhotmail.com> escribió en el mensaje
news:
Ay co*e! Ná hijo, que la despistada esta vez he sido yo :( Tú sigue


leyendo
igual de bien, y yo me voy a ahora mismo a comprarme una gafas!!!! Perdone
usté caballero, los viernes se me suelen trastocar las ideas un poquito


(el
resto de los días también, pero no lo digo que luego todo se sabe)

Un saludo :)
Eva Etxebeste
[MS MVP]
"Juan M. Afan de Ribera" escribió en el mensaje
news:
> Eva, es que no me entero de na. ¿Qué quieres decir con lo de que el
problema
> está en_crear_un_nuevo_libro? En uno de los ejemplos de exportación que


te
> comentaba, lo primero que hace la rutina es abrir Excel y crear un libro
> nuevo con la instrucción
>
> Application.Workbooks.Add
>
> ¿te refieres a eso o es que yo sigo despistao como siempre? (no es coña,
soy
> muy, muy despistado y no me entero de muchas cosas a veces)
>
> Saludos desde Barcelona
> Juan M. Afan de Ribera
> <MVP Ms Access>
> http://www.juanmafan.tk
> http://www.clikear.com/webs4/juanmafan
>
>
> "Eva Etxebeste" <eetxebesteARROBAhotmail.com> escribió en el mensaje
> news:
> > Otro precipitao como yo!!!! ;)))))
> >
> > Japitxu, léete otra vez mi mensaje, que el problema está en _crear_ un
> nuevo
> > libro.
> > Eva Etxebeste
> > [MS MVP]
> > ***IMPORTANTE*** Microsoft Security Bulletin MS03-039
> > http://www.microsoft.com/security/s...03-039.asp
> >
> > "Juan M. Afan de Ribera" escribió en el mensaje
> > news:
> > > Eva, ¿te has mirado estas dos direcciones?
> > >
> > > http://www.clikear.com/webs4/juanma...aexcel.htm
> > > http://www.clikear.com/webs4/juanma...aexcel.htm
> > >
> > > aquí explico como exportar tablas o consultas (compiladas o de
> sentencias
> > > sql) a libros de excel. Yo lo hago con DAO (por aquello de la
costumbre)
> > > pero se hace igual de fácil con ADO.
> > >
> > > Una recomendación: tanto Excel como Word tienen una herramienta
llamada
> > > "Grabadora de macros", que lo que hace es tomar nota de los pasos


que
> das
> > > mientras graba y lo va escribiendo en código VBA. De esta manera es


lo
> más
> > > sencillo del mundo decir: ¿cómo haría esto o lo otro con código?.


Pues
> > nada,
> > > le das a la "Grabadora de macros", haces lo que tengas que hacer,
paras
> la
> > > grabación, te vas al módulo donde se haya grabado la "macro"... et
> voilà,
> > ya
> > > tienes todo el código del mundo y seguro que un poco más.
> > >
> > > Después, si quieres ejecutar estas cosas desde Access, hay que tener
en
> > > cuenta que todo el código de cualquier programa de Office, se


ejecuta
a
> > > través del objeto Application, que representa al programa en sí


mismo.
> > > Entonces, sólo tienes que crear un objeto Application de la clase


que
> > vayas
> > > a usar, por ejemplo:
> > >
> > > Dim app As Excel.Application
> > >
> > > Set app = New Excel.Application
> > > o
> > > Dim app As Word.Application
> > >
> > > Set app = New Word.Application
> > > o
> > > Dim app As Access.Application
> > >
> > > Set app = New Access.Application
> > >
> > > o hacerlo de esta otra forma (para no tener que crear una referencia


a
> la
> > > librería correspondiente)
> > >
> > > Dim app as object
> > >
> > > Set app = CreateObject("Excel.Application")
> > >
> > > ...
> > >
> > > una vez tengas ese objeto application, sólo tienes que adjudicarle


las
> > > acciones que has grabado con la grabadora de macros, por ejemplo, si
la
> > > grabadora de macros te ha puesto algo como
> > >
> > > ActiveCell.FormulaR1C1 = "columna1"
> > > Range("B1").Select
> > > ActiveCell.FormulaR1C1 = "columna2"
> > > Range("C1").Select
> > > ActiveCell.FormulaR1C1 = "columna3"
> > > Range("A3").Select
> > > ActiveCell.FormulaR1C1 = "valor1"
> > > Range("B3").Select
> > > ActiveCell.FormulaR1C1 = "valor2"
> > > Range("C3").Select
> > > ActiveCell.FormulaR1C1 = "valor3"
> > >
> > > tú, desde Access escribes esto otro, utilizando lo anterior:
> > >
> > > Dim app As Object
> > >
> > > Set app = CreateObject("Excel.application")
> > > app.Visible = True
> > >
> > > app.workbooks.Add
> > >
> > > app.ActiveCell.FormulaR1C1 = "columna1"
> > > app.Range("B1").Select
> > > app.ActiveCell.FormulaR1C1 = "columna2"
> > > app.Range("C1").Select
> > > app.ActiveCell.FormulaR1C1 = "columna3"
> > > app.Range("A3").Select
> > > app.ActiveCell.FormulaR1C1 = "valor1"
> > > app.Range("B3").Select
> > > app.ActiveCell.FormulaR1C1 = "valor2"
> > > app.Range("C3").Select
> > > app.ActiveCell.FormulaR1C1 = "valor3"
> > >
> > > Set app = Nothing
> > >
> > > y ya verás que chulo queda :-)
> > >
> > > joer! hoy se me ha soltado el dedo de tanto escribir.
> > >
> > > Saludos desde Barcelona
> > > Juan M. Afan de Ribera
> > > <MVP Ms Access>
> > > http://www.juanmafan.tk
> > > http://www.clikear.com/webs4/juanmafan
> > >
> > >
> > > "Eva Etxebeste" <eetxebesteARROBAhotmail.com> escribió en el mensaje
> > > news:
> > > > Jesús, ¿tienes algún ejemplo _creando_ el libro Excel desde


Access?
> > Estoy
> > > > busca que te busca, prueba que te prueba y no doy con la solución.
> > > >
> > > > Un saludo
> > > > Eva Etxebeste
> > > > [MS MVP]
> > > > "Jesus" escribió en el mensaje
> > > > news:
> > > > > A ver si te vale esto. Si no, igual encuentras mas cosas en mi
> pagina:
> > > > > http://www.melodysoft.com/cgi-bin/f...=ATPACCESS
> > > > >
> > > > > Enviar datos a Excel y formatear celdas con OLE
> > > > >
> > > > > Utilizando automatización OLE en MS Access 2.0 podemos enviar
> > > información
> > > > a
> > > > > una hoja de cálculo de MS Excel , formatear celdas, imprimir


hojas
> > etc.
> > > > > Podemos iniciar una comunicación con la otra aplicación que sólo
> > > podremos
> > > > > utilizar en nuestro código (durante el proceso, el usuario no
vería
> > una
> > > > > tarea de MS Excel).
> > > > > A continuación veremos un ejemplo que nos permite enviar un dato


a
> una
> > > > celda
> > > > > de una hoja de Excel 5.0 previamente creada, así como poner


fuente
> > Arial
> > > > > Negrita 12 a esa celda y alineación centrada a toda la columna.
> > > > > A esta función le pasaremos tres parámetros, el dato que


queremos
> > mandar
> > > y
> > > > > la fila y columna de la celda de la hoja de cálculo donde


queremos
> > > > insertar
> > > > > la información.
> > > > > En un módulo nuevo tecleamos lo siguiente:
> > > > >
> > > > > Function ole_excel (x, i, j)
> > > > > Dim Hoja As Object
> > > > > 'Con la función GetObject iniciamos la comunicación con la
> > > > > 'hoja OLE.XLS de MS Excel 5.0.
> > > > > Set Hoja = GetObject("c:\ejemplo\ole.xls", "excel.sheet")
> > > > > 'Con la propiedad value del método Cells, podemos insertar
> > > > > 'un dato en una celda específica.
> > > > > Hoja.Cells(i, j).value = x
> > > > > 'Las tres líneas siguientes cambian las propiedades Nombre
> > > > > 'Negrita y tamaño de la fuente de una celda.
> > > > > Hoja.Cells(i, j).Font.Name = "Arial"
> > > > > Hoja.Cells(i, j).Font.Bold = True
> > > > > Hoja.Cells(i, j).Font.Size = 12
> > > > > 'Utilizando el método column podemos hacer referencia a


una
> > > > > 'columna de una hoja, y con la propiedad
HorizontalAlignment,
> > > > > 'podemos cambiar la alineación horizontal de la misma.
> > > > > Hoja.Columns(j).HorizontalAlignment = 3
> > > > > 'Las siguientes líneas guardan la hoja y cierran la
> comunicación
> > > > > 'con Excel. Para poder guardar la hoja es necesario
activarla
> > > > > 'con la propiedad visible, aunque el usuario no verá


ninguna
> > > > > 'sesión de Excel.
> > > > > Hoja.Application.windows("ole.xls").visible = True
> > > > > Hoja.Application.ActiveWorkbook.Save
> > > > > Hoja.Application.[Quit]
> > > > > End Function
> > > > >
> > > > > Supongamos que tenemos un formulario que contiene 3 campos donde
> > > aparecen
> > > > el
> > > > > dato que queremos insertar en la hoja de cálculo, la columna y


la
> > fila,
> > > > > llamados "Dato", "Fila" y "Columna" respectivamente, y queremos
> pulsar
> > > un
> > > > > botón que ejecute la función anterior, debemos teclear lo
siguiente
> en
> > > el
> > > > > evento "Al hacer click" del botón:
> > > > >
> > > > >
> > > > > Dim y
> > > > > y=ole_excel([dato],[Fila],[Columna])
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#20 Eva Etxebeste
18/10/2003 - 13:21 | Informe spam
Ya te has vuelto a despistar!!! Mira bien los estatutos, soy socia fundadora
y presidenta vitalicia!!!!
Eva Etxebeste
[MS MVP]

"Juan M. Afan de Ribera" escribió en el mensaje
news:
Ay mare! pues bienvenida al club de los
"perdedores_de_neuronas_por_un_tubo_y_demás_desastres_cotidianos" ;-)

Saludos desde Barcelona
Juan M. Afan de Ribera
<MVP Ms Access>
http://www.juanmafan.tk
http://www.clikear.com/webs4/juanmafan


"Eva Etxebeste" <eetxebesteARROBAhotmail.com> escribió en el mensaje
news:
> Ay co*e! Ná hijo, que la despistada esta vez he sido yo :( Tú sigue
leyendo
> igual de bien, y yo me voy a ahora mismo a comprarme una gafas!!!!


Perdone
> usté caballero, los viernes se me suelen trastocar las ideas un poquito
(el
> resto de los días también, pero no lo digo que luego todo se sabe)
>
> Un saludo :)
> Eva Etxebeste
> [MS MVP]
> "Juan M. Afan de Ribera" escribió en el mensaje
> news:
> > Eva, es que no me entero de na. ¿Qué quieres decir con lo de que el
> problema
> > está en_crear_un_nuevo_libro? En uno de los ejemplos de exportación


que
te
> > comentaba, lo primero que hace la rutina es abrir Excel y crear un


libro
> > nuevo con la instrucción
> >
> > Application.Workbooks.Add
> >
> > ¿te refieres a eso o es que yo sigo despistao como siempre? (no es


coña,
> soy
> > muy, muy despistado y no me entero de muchas cosas a veces)
> >
> > Saludos desde Barcelona
> > Juan M. Afan de Ribera
> > <MVP Ms Access>
> > http://www.juanmafan.tk
> > http://www.clikear.com/webs4/juanmafan
> >
> >
> > "Eva Etxebeste" <eetxebesteARROBAhotmail.com> escribió en el mensaje
> > news:
> > > Otro precipitao como yo!!!! ;)))))
> > >
> > > Japitxu, léete otra vez mi mensaje, que el problema está en _crear_


un
> > nuevo
> > > libro.
> > > Eva Etxebeste
> > > [MS MVP]
> > > ***IMPORTANTE*** Microsoft Security Bulletin MS03-039
> > > http://www.microsoft.com/security/s...03-039.asp
> > >
> > > "Juan M. Afan de Ribera" escribió en el mensaje
> > > news:
> > > > Eva, ¿te has mirado estas dos direcciones?
> > > >
> > > > http://www.clikear.com/webs4/juanma...aexcel.htm
> > > > http://www.clikear.com/webs4/juanma...aexcel.htm
> > > >
> > > > aquí explico como exportar tablas o consultas (compiladas o de
> > sentencias
> > > > sql) a libros de excel. Yo lo hago con DAO (por aquello de la
> costumbre)
> > > > pero se hace igual de fácil con ADO.
> > > >
> > > > Una recomendación: tanto Excel como Word tienen una herramienta
> llamada
> > > > "Grabadora de macros", que lo que hace es tomar nota de los pasos
que
> > das
> > > > mientras graba y lo va escribiendo en código VBA. De esta manera


es
lo
> > más
> > > > sencillo del mundo decir: ¿cómo haría esto o lo otro con código?.
Pues
> > > nada,
> > > > le das a la "Grabadora de macros", haces lo que tengas que hacer,
> paras
> > la
> > > > grabación, te vas al módulo donde se haya grabado la "macro"... et
> > voilà,
> > > ya
> > > > tienes todo el código del mundo y seguro que un poco más.
> > > >
> > > > Después, si quieres ejecutar estas cosas desde Access, hay que


tener
> en
> > > > cuenta que todo el código de cualquier programa de Office, se
ejecuta
> a
> > > > través del objeto Application, que representa al programa en sí
mismo.
> > > > Entonces, sólo tienes que crear un objeto Application de la clase
que
> > > vayas
> > > > a usar, por ejemplo:
> > > >
> > > > Dim app As Excel.Application
> > > >
> > > > Set app = New Excel.Application
> > > > o
> > > > Dim app As Word.Application
> > > >
> > > > Set app = New Word.Application
> > > > o
> > > > Dim app As Access.Application
> > > >
> > > > Set app = New Access.Application
> > > >
> > > > o hacerlo de esta otra forma (para no tener que crear una


referencia
a
> > la
> > > > librería correspondiente)
> > > >
> > > > Dim app as object
> > > >
> > > > Set app = CreateObject("Excel.Application")
> > > >
> > > > ...
> > > >
> > > > una vez tengas ese objeto application, sólo tienes que adjudicarle
las
> > > > acciones que has grabado con la grabadora de macros, por ejemplo,


si
> la
> > > > grabadora de macros te ha puesto algo como
> > > >
> > > > ActiveCell.FormulaR1C1 = "columna1"
> > > > Range("B1").Select
> > > > ActiveCell.FormulaR1C1 = "columna2"
> > > > Range("C1").Select
> > > > ActiveCell.FormulaR1C1 = "columna3"
> > > > Range("A3").Select
> > > > ActiveCell.FormulaR1C1 = "valor1"
> > > > Range("B3").Select
> > > > ActiveCell.FormulaR1C1 = "valor2"
> > > > Range("C3").Select
> > > > ActiveCell.FormulaR1C1 = "valor3"
> > > >
> > > > tú, desde Access escribes esto otro, utilizando lo anterior:
> > > >
> > > > Dim app As Object
> > > >
> > > > Set app = CreateObject("Excel.application")
> > > > app.Visible = True
> > > >
> > > > app.workbooks.Add
> > > >
> > > > app.ActiveCell.FormulaR1C1 = "columna1"
> > > > app.Range("B1").Select
> > > > app.ActiveCell.FormulaR1C1 = "columna2"
> > > > app.Range("C1").Select
> > > > app.ActiveCell.FormulaR1C1 = "columna3"
> > > > app.Range("A3").Select
> > > > app.ActiveCell.FormulaR1C1 = "valor1"
> > > > app.Range("B3").Select
> > > > app.ActiveCell.FormulaR1C1 = "valor2"
> > > > app.Range("C3").Select
> > > > app.ActiveCell.FormulaR1C1 = "valor3"
> > > >
> > > > Set app = Nothing
> > > >
> > > > y ya verás que chulo queda :-)
> > > >
> > > > joer! hoy se me ha soltado el dedo de tanto escribir.
> > > >
> > > > Saludos desde Barcelona
> > > > Juan M. Afan de Ribera
> > > > <MVP Ms Access>
> > > > http://www.juanmafan.tk
> > > > http://www.clikear.com/webs4/juanmafan
> > > >
> > > >
> > > > "Eva Etxebeste" <eetxebesteARROBAhotmail.com> escribió en el


mensaje
> > > > news:
> > > > > Jesús, ¿tienes algún ejemplo _creando_ el libro Excel desde
Access?
> > > Estoy
> > > > > busca que te busca, prueba que te prueba y no doy con la


solución.
> > > > >
> > > > > Un saludo
> > > > > Eva Etxebeste
> > > > > [MS MVP]
> > > > > "Jesus" escribió en el mensaje
> > > > > news:
> > > > > > A ver si te vale esto. Si no, igual encuentras mas cosas en mi
> > pagina:
> > > > > > http://www.melodysoft.com/cgi-bin/f...=ATPACCESS
> > > > > >
> > > > > > Enviar datos a Excel y formatear celdas con OLE
> > > > > >
> > > > > > Utilizando automatización OLE en MS Access 2.0 podemos enviar
> > > > información
> > > > > a
> > > > > > una hoja de cálculo de MS Excel , formatear celdas, imprimir
hojas
> > > etc.
> > > > > > Podemos iniciar una comunicación con la otra aplicación que


sólo
> > > > podremos
> > > > > > utilizar en nuestro código (durante el proceso, el usuario no
> vería
> > > una
> > > > > > tarea de MS Excel).
> > > > > > A continuación veremos un ejemplo que nos permite enviar un


dato
a
> > una
> > > > > celda
> > > > > > de una hoja de Excel 5.0 previamente creada, así como poner
fuente
> > > Arial
> > > > > > Negrita 12 a esa celda y alineación centrada a toda la


columna.
> > > > > > A esta función le pasaremos tres parámetros, el dato que
queremos
> > > mandar
> > > > y
> > > > > > la fila y columna de la celda de la hoja de cálculo donde
queremos
> > > > > insertar
> > > > > > la información.
> > > > > > En un módulo nuevo tecleamos lo siguiente:
> > > > > >
> > > > > > Function ole_excel (x, i, j)
> > > > > > Dim Hoja As Object
> > > > > > 'Con la función GetObject iniciamos la comunicación con


la
> > > > > > 'hoja OLE.XLS de MS Excel 5.0.
> > > > > > Set Hoja = GetObject("c:\ejemplo\ole.xls",


"excel.sheet")
> > > > > > 'Con la propiedad value del método Cells, podemos


insertar
> > > > > > 'un dato en una celda específica.
> > > > > > Hoja.Cells(i, j).value = x
> > > > > > 'Las tres líneas siguientes cambian las propiedades


Nombre
> > > > > > 'Negrita y tamaño de la fuente de una celda.
> > > > > > Hoja.Cells(i, j).Font.Name = "Arial"
> > > > > > Hoja.Cells(i, j).Font.Bold = True
> > > > > > Hoja.Cells(i, j).Font.Size = 12
> > > > > > 'Utilizando el método column podemos hacer referencia a
una
> > > > > > 'columna de una hoja, y con la propiedad
> HorizontalAlignment,
> > > > > > 'podemos cambiar la alineación horizontal de la misma.
> > > > > > Hoja.Columns(j).HorizontalAlignment = 3
> > > > > > 'Las siguientes líneas guardan la hoja y cierran la
> > comunicación
> > > > > > 'con Excel. Para poder guardar la hoja es necesario
> activarla
> > > > > > 'con la propiedad visible, aunque el usuario no verá
ninguna
> > > > > > 'sesión de Excel.
> > > > > > Hoja.Application.windows("ole.xls").visible = True
> > > > > > Hoja.Application.ActiveWorkbook.Save
> > > > > > Hoja.Application.[Quit]
> > > > > > End Function
> > > > > >
> > > > > > Supongamos que tenemos un formulario que contiene 3 campos


donde
> > > > aparecen
> > > > > el
> > > > > > dato que queremos insertar en la hoja de cálculo, la columna y
la
> > > fila,
> > > > > > llamados "Dato", "Fila" y "Columna" respectivamente, y


queremos
> > pulsar
> > > > un
> > > > > > botón que ejecute la función anterior, debemos teclear lo
> siguiente
> > en
> > > > el
> > > > > > evento "Al hacer click" del botón:
> > > > > >
> > > > > >
> > > > > > Dim y
> > > > > > y=ole_excel([dato],[Fila],[Columna])
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida