Macro VBA Power Point - Excel

18/10/2007 - 20:19 por LZ | Informe spam
Hola a todos,

Hago esta consulta en este foro de Excel en la suposicion de que hay mas
experiencia en este ambito que en Power Point.

Necesito resolver el siguiente problema:

Dada una PPT basada en un template necesito generar una macro VBA en Power
Point que ejecute a su vez macros en workbooks excel para obtener un conjunto
de datos y graficos que finalmente pueblen la PPT.

Es posible generar esa macro VBA en Power Point que redireccione su
ejecucion a Excel, obtenga datos y graficos y los pegue en la presentacion
PPT ?

Soy un neofito en el tema que no paso de generacion de macros VBA a traves
de la grabadora de macros.

Anticipadamente gracias

Leonardo

Preguntas similare

Leer las respuestas

#6 LZ
23/10/2007 - 23:55 | Informe spam
Nuevamente aclaro que esta pregunta es sobre VBA Power Point, pero la dirijo
al foro excel en la suposicion que los masters de VBA Excel estan en
condiciones de ayudarme.

Necesito realizar una macro VBA Power Point que seleccione datos y graficos
de planillas excel para incluir dichos objketos en una PPT.

Pude implementar una solucion enviada por Hector Miguel de la que solo me
resta resolver en VBA el equivalente a la ejecucion del comando:

Edit -> Paste Special -> Paste Link -> MS Office Excel Worksheet Object

Sabe algun participante del foro excel que instrucciones debo adicionar a mi
codigo VBA ?

Gracias


"LZ" escribió:

Hola Hector Miguel,

Abusando de tus conocimientos te consulto:

He implementado la solucion que me enviaste en Power Point.
En primera nstancia la macro quedo asi:

Sub Preparar_desde_Excel()
With CreateObject("Excel.Application")
.Visible = True
.Workbooks.Open "c:\temp\lz1.xls" ' <= por aqui la ruta y el nombre del
archivo .XLS '
.Run "PL01G" ' <= pon aqui el nombre de la macro que se ejecuta desde excel '
.ActiveWorkbook.Close False
.Quit
End With
End Sub

que es lo que me has enviado pero apuntando ahora a mi planilla - macro;
cambie el atributo de visibilidad a true para permitir ver lo que sucedia.

La macro PL01G es la siguiente:

Sub PL01G()
'
' PL01G Macro
' Macro recorded 10/19/2007 by LZ
'
' Keyboard Shortcut: Ctrl+Shift+B
'
Sheets("PL01").Select
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
End Sub

muy simple que selecciona un grafico y lo copia para que luego la
Sub_Preparar_desde_Excel() pegue su contenido en la PPT.

Tengo aqui dos dificultades:

1. Si corro PL01G en excel veo que el grafico se ha seleccionado y copiado.
Pero si lo hago desde la macro Sub_Preparar_desde_Excel() no me queda
habillitado en el menu EDIT de Poewer Point las opciones de Paste y Paste
Special con las que pensaba pegar el grafico excel. Tengo la sensacion de que
no se ejecuta:

ActiveChart.ChartArea.Copy

y

2. Para el caso de que se resuelva 1. desconozco como debo hacer en VBA para
hacer un EDIT-> Paste Special-> MS Office Excel Chart Object
con el cual pensaba pegar el chart generado en excel.

Pense que con la grabadora de macros de Power Point 2003 podria obtener las
sentencias de VBA para hacerlo, pero esta ultima accion no queda registrada.

Si puedes darme una mano, agradecidisimo

Saludos

Leonardo





"Héctor Miguel" escribió:

> hola, !
>
> > Dada una PPT basada en un template necesito generar una macro VBA en Power Point
> > que ejecute a su vez macros en workbooks excel para obtener un conjunto de datos y graficos que finalmente pueblen la PPT.
> > Es posible generar esa macro VBA en Power Point que redireccione su ejecucion a Excel
> > obtenga datos y graficos y los pegue en la presentacion PPT ?
> > Soy un neofito en el tema que no paso de generacion de macros VBA a traves de la grabadora de macros.
>
> puedes usar objetos de automatizacion entre aplicaciones (p.e.)
> si excel ya esta abierto... -> GetObject(, "excel.application")
> iniciar una nueva instancia > CreateObject("excel.application")
>
> hecho lo anterior, ya puedes trabajar con el modelo de objetos de la aplicacion instanciada/automatizada/...
> el siguiente ejemplo es una macro ejecutable desde un modulo de codigo en PPT
>
> -> (de ser necesario) complementa con otras instrucciones dependiendo de "quien" realiza las acciones
> (la obtencion del conjunto de datos y graficos que finalmente pueblen la PPT)
> macros desde excel ???
> macros desde powerpoint ???
>
> si cualquier duda (o informacion adicional)... comentas ?
> saludos,
> hector.
>
> Sub Preparar_desde_Excel()
> With CreateObject("Excel.Application")
> .Visible = True
> .Workbooks.Open "pases a ppt.xls" ' <= por aqui la ruta y el nombre del archivo .XLS '
> .Run "Macro_para_PPT" ' <= pon aqui el nombre de la macro que se ejecuta desde excel '
> .ActiveWorkbook.Close False
> .Quit
> End With
> MsgBox "Terminadas las macros desde excel, y ahora que ???"
> End Sub
>
>
>
Respuesta Responder a este mensaje
#7 Héctor Miguel
24/10/2007 - 02:01 | Informe spam
hola, Leonardo !

Nuevamente aclaro que esta pregunta es sobre VBA Power Point
pero la dirijo al foro excel en la suposicion que... estan en condiciones de ayudarme.
Necesito realizar una macro VBA Power Point que seleccione datos y graficos de planillas excel para incluir dichos objketos en una PPT.
Pude implementar una solucion... de la que solo me resta resolver en VBA el equivalente a la ejecucion del comando:
Edit -> Paste Special -> Paste Link -> MS Office Excel Worksheet Object
Sabe algun participante del foro excel que instrucciones debo adicionar a mi codigo VBA ?



1) existen "ciertas" acciones que hacen un vaciado del portapapeles (guardar, pulsar {esc}, cerrar la aplicacion, etc.)
es por esto que no queda nada que pegar en el portapapeles y por consiguiente el menu en PPT no esta habilitado :-((

2) para solucionarlo, es necesario que hagas el pegado ANTES de cerrar la aplicacion excel instanciada desde PPT
(p.e.) antes de la linea con el -> ".ActiveWorkbook.Close False"
-> usa alguna de las siguientes instrucciones:

a) ActivePresentation.Slides(1).Shapes.Paste
(pega la imagen copiada como objeto "flotante" en la presentacion PPT)

b) ActivePresentation.Windows(1).View.Paste ' ppPasteEnhancedMetafile
(pega la imagen copiada +/- al centro de la ventana activa del PPT

-> hay mayores detalles en: -> http://www.pptfaq.com/
(p.e. revisa la seccion de "Working with Charts and Graphs")

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ las consultas anteriores __
He implementado la solucion que me enviaste en Power Point.
En primera nstancia la macro quedo asi:

Sub Preparar_desde_Excel()
With CreateObject("Excel.Application")
.Visible = True
.Workbooks.Open "c:\temp\lz1.xls" ' <= por aqui la ruta y el nombre del archivo .XLS '
.Run "PL01G" ' <= pon aqui el nombre de la macro que se ejecuta desde excel '
.ActiveWorkbook.Close False
.Quit
End With
End Sub

... apuntando ahora a mi planilla - macro; cambie el atributo de visibilidad a true para permitir ver lo que sucedia.

La macro PL01G es la siguiente:
Sub PL01G()
Sheets("PL01").Select
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
End Sub

muy simple que selecciona un grafico y lo copia para que luego la Sub_Preparar_desde_Excel() pegue su contenido en la PPT.

Tengo aqui dos dificultades:
1. Si corro PL01G en excel veo que el grafico se ha seleccionado y copiado.
Pero si lo hago desde la macro Sub_Preparar_desde_Excel() no me queda habillitado en el menu EDIT de Poewer Point


las opciones de Paste y Paste Special con las que pensaba pegar el grafico excel. Tengo la sensacion de que no se ejecuta:
ActiveChart.ChartArea.Copy
2. Para el caso de que se resuelva 1. desconozco como debo hacer en VBA para hacer un


EDIT-> Paste Special-> MS Office Excel Chart Object con el cual pensaba pegar el chart generado en excel.

Pense que con la grabadora de macros de Power Point 2003 podria obtener las sentencias de VBA para hacerlo
pero esta ultima accion no queda registrada.
>
> > Dada una PPT basada en un template necesito generar una macro VBA en Power Point
> > que ejecute a su vez macros en workbooks excel para obtener un conjunto de datos y graficos que finalmente pueblen la PPT.
> > Es posible generar esa macro VBA en Power Point que redireccione su ejecucion a Excel
> > obtenga datos y graficos y los pegue en la presentacion PPT ?
> > Soy un neofito en el tema que no paso de generacion de macros VBA a traves de la grabadora de macros.
>
> puedes usar objetos de automatizacion entre aplicaciones (p.e.)
> si excel ya esta abierto... -> GetObject(, "excel.application")
> iniciar una nueva instancia > CreateObject("excel.application")
>
> hecho lo anterior, ya puedes trabajar con el modelo de objetos de la aplicacion instanciada/automatizada/...
> el siguiente ejemplo es una macro ejecutable desde un modulo de codigo en PPT
>
> -> (de ser necesario) complementa con otras instrucciones dependiendo de "quien" realiza las acciones
> (la obtencion del conjunto de datos y graficos que finalmente pueblen la PPT)
> macros desde excel ???
> macros desde powerpoint ???
>
> si cualquier duda (o informacion adicional)... comentas ?
> saludos,
> hector.
>
> Sub Preparar_desde_Excel()
> With CreateObject("Excel.Application")
> .Visible = True
> .Workbooks.Open "pases a ppt.xls" ' <= por aqui la ruta y el nombre del archivo .XLS '
> .Run "Macro_para_PPT" ' <= pon aqui el nombre de la macro que se ejecuta desde excel '
> .ActiveWorkbook.Close False
> .Quit
> End With
> MsgBox "Terminadas las macros desde excel, y ahora que ???"
> End Sub
Respuesta Responder a este mensaje
#8 LZ
25/10/2007 - 03:56 | Informe spam
Héctor Miguel,

lo que me has indicado funciono correctamente.

Nuevamente gracias

Leonardo

"Héctor Miguel" wrote:

hola, Leonardo !

> Nuevamente aclaro que esta pregunta es sobre VBA Power Point
> pero la dirijo al foro excel en la suposicion que... estan en condiciones de ayudarme.
> Necesito realizar una macro VBA Power Point que seleccione datos y graficos de planillas excel para incluir dichos objketos en una PPT.
> Pude implementar una solucion... de la que solo me resta resolver en VBA el equivalente a la ejecucion del comando:
> Edit -> Paste Special -> Paste Link -> MS Office Excel Worksheet Object
> Sabe algun participante del foro excel que instrucciones debo adicionar a mi codigo VBA ?

1) existen "ciertas" acciones que hacen un vaciado del portapapeles (guardar, pulsar {esc}, cerrar la aplicacion, etc.)
es por esto que no queda nada que pegar en el portapapeles y por consiguiente el menu en PPT no esta habilitado :-((

2) para solucionarlo, es necesario que hagas el pegado ANTES de cerrar la aplicacion excel instanciada desde PPT
(p.e.) antes de la linea con el -> ".ActiveWorkbook.Close False"
-> usa alguna de las siguientes instrucciones:

a) ActivePresentation.Slides(1).Shapes.Paste
(pega la imagen copiada como objeto "flotante" en la presentacion PPT)

b) ActivePresentation.Windows(1).View.Paste ' ppPasteEnhancedMetafile
(pega la imagen copiada +/- al centro de la ventana activa del PPT

-> hay mayores detalles en: -> http://www.pptfaq.com/
(p.e. revisa la seccion de "Working with Charts and Graphs")

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ las consultas anteriores __
>> He implementado la solucion que me enviaste en Power Point.
>> En primera nstancia la macro quedo asi:
>>
>> Sub Preparar_desde_Excel()
>> With CreateObject("Excel.Application")
>> .Visible = True
>> .Workbooks.Open "c:\temp\lz1.xls" ' <= por aqui la ruta y el nombre del archivo .XLS '
>> .Run "PL01G" ' <= pon aqui el nombre de la macro que se ejecuta desde excel '
>> .ActiveWorkbook.Close False
>> .Quit
>> End With
>> End Sub
>>
>> ... apuntando ahora a mi planilla - macro; cambie el atributo de visibilidad a true para permitir ver lo que sucedia.
>>
>> La macro PL01G es la siguiente:
>> Sub PL01G()
>> Sheets("PL01").Select
>> ActiveSheet.ChartObjects("Chart 1").Activate
>> ActiveChart.ChartArea.Select
>> ActiveChart.ChartArea.Copy
>> End Sub
>>
>> muy simple que selecciona un grafico y lo copia para que luego la Sub_Preparar_desde_Excel() pegue su contenido en la PPT.
>>
>> Tengo aqui dos dificultades:
>> 1. Si corro PL01G en excel veo que el grafico se ha seleccionado y copiado.
>> Pero si lo hago desde la macro Sub_Preparar_desde_Excel() no me queda habillitado en el menu EDIT de Poewer Point
> las opciones de Paste y Paste Special con las que pensaba pegar el grafico excel. Tengo la sensacion de que no se ejecuta:
>> ActiveChart.ChartArea.Copy
>> 2. Para el caso de que se resuelva 1. desconozco como debo hacer en VBA para hacer un
> EDIT-> Paste Special-> MS Office Excel Chart Object con el cual pensaba pegar el chart generado en excel.
>>
>> Pense que con la grabadora de macros de Power Point 2003 podria obtener las sentencias de VBA para hacerlo
>> pero esta ultima accion no queda registrada.
>> >
>> > > Dada una PPT basada en un template necesito generar una macro VBA en Power Point
>> > > que ejecute a su vez macros en workbooks excel para obtener un conjunto de datos y graficos que finalmente pueblen la PPT.
>> > > Es posible generar esa macro VBA en Power Point que redireccione su ejecucion a Excel
>> > > obtenga datos y graficos y los pegue en la presentacion PPT ?
>> > > Soy un neofito en el tema que no paso de generacion de macros VBA a traves de la grabadora de macros.
>> >
>> > puedes usar objetos de automatizacion entre aplicaciones (p.e.)
>> > si excel ya esta abierto... -> GetObject(, "excel.application")
>> > iniciar una nueva instancia > CreateObject("excel.application")
>> >
>> > hecho lo anterior, ya puedes trabajar con el modelo de objetos de la aplicacion instanciada/automatizada/...
>> > el siguiente ejemplo es una macro ejecutable desde un modulo de codigo en PPT
>> >
>> > -> (de ser necesario) complementa con otras instrucciones dependiendo de "quien" realiza las acciones
>> > (la obtencion del conjunto de datos y graficos que finalmente pueblen la PPT)
>> > macros desde excel ???
>> > macros desde powerpoint ???
>> >
>> > si cualquier duda (o informacion adicional)... comentas ?
>> > saludos,
>> > hector.
>> >
>> > Sub Preparar_desde_Excel()
>> > With CreateObject("Excel.Application")
>> > .Visible = True
>> > .Workbooks.Open "pases a ppt.xls" ' <= por aqui la ruta y el nombre del archivo .XLS '
>> > .Run "Macro_para_PPT" ' <= pon aqui el nombre de la macro que se ejecuta desde excel '
>> > .ActiveWorkbook.Close False
>> > .Quit
>> > End With
>> > MsgBox "Terminadas las macros desde excel, y ahora que ???"
>> > End Sub



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