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

#11 Victor Delgadillo
17/10/2003 - 05:05 | Informe spam
Rectifico... ya lo obtuve, gracias!

Victor Delgadillo MS-MVP Access
Miami, Florida

Mensajes a los grupos de noticia, asi todos nos beneficiamos!



"Victor Delgadillo" wrote in message
news:
Jesus, pero se requiere de usuario y password para entrar al almacen?

Victor Delgadillo MS-MVP Access
Miami, Florida

Mensajes a los grupos de noticia, asi todos nos beneficiamos!



"Jesus" wrote in message
news:
> He mirado y lo tengo en el almacen. Bajatelo.
>
> http://www.melodysoft.com/cgi-bin/f...=ATPACCESS
>
>
>
> "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
#12 Eva Etxebeste
17/10/2003 - 08:55 | Informe spam
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
#13 Juan M. Afan de Ribera
17/10/2003 - 19:19 | Informe spam
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
#14 Victor Delgadillo
18/10/2003 - 00:41 | Informe spam
Puez, en buena compañía!! verda!


Victor Delgadillo MS-MVP Access
Miami, Florida

Mensajes a los grupos de noticia, asi todos nos beneficiamos!



"Eva Etxebeste" <eetxebesteARROBAhotmail.com> wrote in message
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
#15 Naufrag
18/10/2003 - 01:08 | Informe spam
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
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida