Copiar-mover PPT

8 envíos / 0 nuevos
Último envío
Zurdo23
Imagen de Zurdo23
Offline
última acción: Hace 5 años 2 meses
alta: 02/10/2018 - 15:58
Puntos: 140
Copiar-mover PPT

Buen día, necesito su ayuda

 

Tengo el siguiente detalle, copio un rango de datos en excel y lo paso a power point, intento moverlo en un área especifica de la diapositiva, pero no logro moverla......ayuda

------SELECCION DE RANGO------

Range("A4").Select

    Range(Selection, Selection.End(xlToRight)).Select

    Range(Selection, Selection.End(xlDown)).Select

        Selection.Copy

---PEGADO EN POWER POINT

diapositiva.Shapes.PasteSpecial(Link:=True).Select

 

''''''''usando un codigo que se publico

Set mi_imagen = ActivePresentation.Slides(1).Shapes(1)   "INTENTO CON EL NUMERO DE SHAPE EN LA PRESENTACION

'Set mi_imagen = ActivePresentation.Slides(1).Shapes("Objeto 2")   '''INTENTO COMO NOMBRE DEL OBJETO EN LA PRESENTACION

     With mi_imagen

        .Left = 10

        .Top = 10

End With

 

PD: mi_imagen esta declarada desde el inicio!

 

Pero no mueve la imagen al pegarla

Ayuda!

 

referencias

AdjuntoTamaño
Image icon tabla_ppt.png9.75 KB
Image icon referencias.png38.04 KB
Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 1 día
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
¿Cómo tienes declarada la

¿Cómo tienes declarada la variable mi_imagen? 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 hora 4 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Pues a mí si me funciona con

Pues a mí si me funciona con shapes(1)

Set mi_imagen = ActivePresentation.Slides(1).Shapes(1)

¿te da algún error?

prueba a ponerlo de esta otra manera, utilizando la variable diapositiva:

Set mi_imagen = diapositiva.Shapes(1)

 

 

------
Ya sé Excel, pero necesito más.

Zurdo23
Imagen de Zurdo23
Offline
última acción: Hace 5 años 2 meses
alta: 02/10/2018 - 15:58
Puntos: 140
no funciona, no mueve la imagen

 

Este es el codigo que estoy probando solo para mover la imagen, pero no funciona.... no manda ningun error

 Dim mi_imagen As Shape

Sub Moverimagen()

 NumDiapositiva = 1                                                                                                          ']

'<< VALIDAR SI SE ESTÁ EJECUTANDO POWERPOINT >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]

On Error Resume Next                                                                                                        ']

Set PPT = GetObject(, "PowerPoint.Application")                                                                             ']

If PPT Is Nothing Then

 

Set PPT = CreateObject("PowerPoint.Application")                                                                            ']

    PPT_en_Curso = True                                                                                                     ']

End If

 'ruta del archivo que abre

Set Presentacion = PPT.Presentations.Open("C:\............. \archivo.pptx")

 'Set mi_imagen = ActivePresentation.Slides(1).Shapes(1)   intento normal

'Set mi_imagen = ActivePresentation.Slides(1).Shapes("Rectangulo1") intento con el nombre

Set mi_imagen = diapositiva.Shapes(1) 'ultimo untento

     With mi_imagen

        .Left = 10

        .Top = 10

End With

End Sub

Cuando entra a mi_imagen, no tiene nada, "no agarra nada"....ayuda
AdjuntoTamaño
Image icon mi_imagen.png7.18 KB
Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 1 día
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Como has cargado el archivo

Como has cargado el archivo en la variable Presentacion, vamos a utilizarla, no?

Con Presentacion.Slides(1).Shapes(1) a mí me funciona.

Si el shape se llama Rectangulo1, también funciona Presentacion.Slides(1).Shapes("Rectangulo1")

¿Qué te puede pasar?

Que ActivePresentation no se corresponda con Presentacion, por la razón que sea. Por ejemplo, porque haya otra presentación abierta que acapare el foco.

Que Slides(1) no sea la diapositiva con la que quieres trabajar. Lo suyo sería utilizar una inspección que te diga qué es el objeto Slides(1), pero muchas veces es más rápido escribir en la ventana Inmediato algo como debug.print Slides(1).name

Que haya otras shapes, y la que tú quieres mover no sea Shapes(1). La manera más rápida de mirar esto es abriendo el panel de selección en Powerpoint y ver qué tienes por ahí.

Por lo demás, mientras no adjuntes el archivo de powerpoint que te da problemas, no podemos hacer otra cosa que adivinar. El paso a paso que he puesto puede ser una guía para hacer un buen debugging.

 

Un saludo

 

Zurdo23
Imagen de Zurdo23
Offline
última acción: Hace 5 años 2 meses
alta: 02/10/2018 - 15:58
Puntos: 140
no funciona, no mueve la imagen

Cron

gracias por tu comentario pero ya probe de todo, una diapositiva en blanco en el archivo y solo una imagen y justamente la nombro como se llama en el panel de seleccion....... en el archivo solo hay un slide y una diapositiva

 

¿porque no se mueve?!!!!!!!

AdjuntoTamaño
Image icon pptx.png89.65 KB
Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 1 día
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
HolaHe replicado tu ejemplo

Hola

He replicado tu ejemplo en el VBE de un Excel, con un PPT abierto. ¿Puede ser que haya algún problema en la definición de los objetos?

Partiendo de tener seleccionada la referencia a la librería de Powerpoint (esta sería nuestra primera aproximación, durante la programación. Después sustituiríamos todos los objetos Powerpoint por el genérico Object para que funcione en cualquier máquina), mi código es el siguiente:

Sub asdf()

Dim ppt As PowerPoint.Application

Dim presentation As PowerPoint.presentation

Dim imagen As PowerPoint.Shape

 

Set ppt = GetObject(, "Powerpoint.application")

Set presentation = ppt.ActivePresentation

Set imagen = presentation.Slides(1).Shapes(1)

 

imagen.Left = 100

imagen.Top = imagen.Top + 50

End Sub

 

Este código funciona perfectamente. Adáptalo como necesites.

 

Un saludo

Zurdo23
Imagen de Zurdo23
Offline
última acción: Hace 5 años 2 meses
alta: 02/10/2018 - 15:58
Puntos: 140
Funciona!

Muchas gracias Cron.... probe el codigo y funciono bien, ahora estoy adaptando en la rutina para pasar varias tablas!

Gracias!

Pacomegia.. te agradezco tambien..

 

Saludos!