** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Otros Productos Microsoft
  Mensajes nuevos Mensajes nuevos RSS - ¿Cómo copio todos elementos de powerpoint a word?
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerrado¿Cómo copio todos elementos de powerpoint a word?

 Responder Responder Página  12>
Autor
Mensaje Invertir el orden de clasificación
Josepo Ver desplegable
Asiduo
Asiduo


Unido: 25/Mayo/2006
Estado: Sin conexión
Puntos: 229
Enlace directo a este mensaje Tema: ¿Cómo copio todos elementos de powerpoint a word?
    Enviado: 15/Mayo/2016 a las 21:57
Muchas gracias, así sale perfecto. Queda algo grande en cada hoja del word, no puedo redimensionarlo desde el word si no es objeto a objeto, se me sale por el margen de la derecha. No sé si se puede indicar en la instrucción de pegado que de alguna manera lo haga un poco más pequeño. 
Pero bueno, lo que es copiar el contenido de las diapositivas y pegarlo, lo hace perfectamente
Aplaudir
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 11167
Enlace directo a este mensaje Enviado: 15/Mayo/2016 a las 21:24
Para ser la primera vez que programo en PW no queda mal ....  LOL

Option Explicit

Private Sub CopiarWord()
Dim n As Integer, WDoc As Object

    Set WDoc = CreateObject("Word.Application")
    WDoc.Visible = True
    WDoc.documents.Add
    

    For n = 1 To ActivePresentation.Slides.Count
        ActivePresentation.Slides(n).Select             ' Activate present slide
        ActiveWindow.Selection.SlideRange.Shapes.SelectAll
        ActiveWindow.Selection.Copy                     ' Copy to clipboard
        
        WDoc.Selection.endkey Unit:=6  'wdStory
        If n > 1 Then WDoc.Selection.InsertBreak Type:=7         'wdPageBreak
        WDoc.Selection.Paste
    
    Next n
    
    WDoc.activedocument.saveas2 FileName:="C:\Temp\DocumentoDiapo1.docx"
    WDoc.Quit
    Set WDoc = Nothing

End Sub


Obviamente será muy mejorable.  Tongue





Editado por Mihura - 15/Mayo/2016 a las 21:30
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Josepo Ver desplegable
Asiduo
Asiduo


Unido: 25/Mayo/2006
Estado: Sin conexión
Puntos: 229
Enlace directo a este mensaje Enviado: 15/Mayo/2016 a las 19:36
He mirado algo de automatizar y he retocado el código pero nada. Lo he dejado así:
   Dim objWdDoc As Word.Document
   Set objWdDoc = GetObject("c:\prueba\prueba.docx")
   
  For n = 1 To ActivePresentation.Slides.Count
        ActivePresentation.Slides(n).Select             ' Activate present slide
        Set myDocument = ActivePresentation.Slides(n)   ' Assign to a variable the slide (perhaps is not necessary?)

        'ActivePresentation.Slides(n).Shapes.Range(myDocument.Shapes.SelectAll).Group.Select ' Group the shapes together.
        ActivePresentation.Slides(n).Shapes.SelectAll   ' Sellect all the content
        ActiveWindow.Selection.Copy                     ' Copy to clipboard
      ' Now you need to copy from clipboard to Paint or what ever you whant
        objWdDoc.Selection.Paste
        
        
    Next n

No sé, quizás no sea una buena idea este hilo. Me pareció una buena idea al principio pero ahora no le veo solución
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 11167
Enlace directo a este mensaje Enviado: 15/Mayo/2016 a las 13:59
A eso me refiero, desde PW tendrás un Word abierto para irle pegando lo que vayas copiando ¿no?.

La verdad es que también podrías hacerlo al revés, desde el Word destino abrir el PW que quieres tratar... tanto da, que da lo mismo.

Busca automatización, te saldrán ejemplos de abrir/crear/tratar un word desde VBA.


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Josepo Ver desplegable
Asiduo
Asiduo


Unido: 25/Mayo/2006
Estado: Sin conexión
Puntos: 229
Enlace directo a este mensaje Enviado: 15/Mayo/2016 a las 13:47
No tengo abierto ningún word, Jesús. Lo estoy haciendo desde VBA Powerpoint.

¿Lo que propones es hacerlo al revés? Desde VBA para word?
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 11167
Enlace directo a este mensaje Enviado: 15/Mayo/2016 a las 11:14
He abierto un PW en 2003, le he dado a la grabadora, he modificado el titulo, el subtitulo, he seleccionado todo y lo he copiado.

La macro creada es esta:

Sub Macro1()
'
' Macro grabada el 15/05/2016 por JESUS
'

    ActiveWindow.Selection.SlideRange.Shapes("Rectangle 2").Select
    ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Select
    ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Characters(Start:=1, Length:=0).Select
    With ActiveWindow.Selection.TextRange
        .Text = "TITULO"
        With .Font
            .Name = "Arial"
            .Size = 44
            .Bold = msoFalse
            .Italic = msoFalse
            .Underline = msoFalse
            .Shadow = msoFalse
            .Emboss = msoFalse
            .BaselineOffset = 0
            .AutoRotateNumbers = msoFalse
            .Color.SchemeColor = ppTitle
        End With
    End With
    ActiveWindow.Selection.SlideRange.Shapes("Rectangle 3").Select
    ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Select
    ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Characters(Start:=1, Length:=0).Select
    With ActiveWindow.Selection.TextRange
        .Text = "Subtitulo" + Chr$(CharCode:=9)
        With .Font
            .Name = "Arial"
            .Size = 32
            .Bold = msoFalse
            .Italic = msoFalse
            .Underline = msoFalse
            .Shadow = msoFalse
            .Emboss = msoFalse
            .BaselineOffset = 0
            .AutoRotateNumbers = msoFalse
            .Color.SchemeColor = ppForeground
        End With
    End With
    ActiveWindow.Selection.Unselect
    ActiveWindow.Selection.SlideRange.Shapes("Rectangle 3").Select
    ActiveWindow.Selection.Unselect
    ActiveWindow.Selection.SlideRange.Shapes.SelectAll
    ActiveWindow.Selection.Copy
End Sub


Si haces lo mismo con Word, verás que la orden de pegar es:

Selection.Paste

Supongo que ya tendrás abierto un Word por automatización ... ¿no?






Editado por Mihura - 15/Mayo/2016 a las 11:18
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 11167
Enlace directo a este mensaje Enviado: 15/Mayo/2016 a las 11:03
Una cosa muuuuuuy útil es la grabadora de macros, .... la pones en funcionamiento, haces lo que quieres con los menús y comandos normales y cuando terminas cierras la macro, la examinas y ves las órdenes que has dado traducidas a VBA.

El problema puede ser la versión de powerpoint que uses, ya que a partir del 2.010 el impresentable equipo de desarrollo de PW la quitó. Si no tuvieras una versión anterior puedes mirar de instalártela, en otro equipo o en una máquina virtual, que para eso es comodísima.
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
Josepo Ver desplegable
Asiduo
Asiduo


Unido: 25/Mayo/2006
Estado: Sin conexión
Puntos: 229
Enlace directo a este mensaje Enviado: 15/Mayo/2016 a las 10:57
Obviando esa línea hace lo mismo que el anterior código, recorre las diapositivas y deja seleccionado los objetos de la última.
Donde me indicas que debería poner una instrucción que haga lo que yo quiero, quiero poner que me lo copie en un word, pero no sé como hacerlo.
Entiendo que primero habría que abrirlo (pero fuera del bucle) y luego pegar en ese word. No sé si quizás habría que poner en el bucle:
- Pegar el contenido del clipboard en c:\carpeta\ejemplo.docx
- Crear un salto de línea al final de c:\carpeta\ejemplo.docx

¿Y así quizás vaya copiando y pegando los objetos de cada diapositiva seguidos, no?

Lo que no tengo ni idea es como se pone esa instrucción. He probado con Document. Open pero no sé hacerlo


Editado por Josepo - 15/Mayo/2016 a las 10:57
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: Binghamton NY.
Estado: Sin conexión
Puntos: 3424
Enlace directo a este mensaje Enviado: 15/Mayo/2016 a las 02:42
Probablemente tienes un solo objeto y por eso no puede agruparlo, deberías hacer algún tipo de gestión de errores para este caso..
El Búho es mi ídolo caido
Arriba
Josepo Ver desplegable
Asiduo
Asiduo


Unido: 25/Mayo/2006
Estado: Sin conexión
Puntos: 229
Enlace directo a este mensaje Enviado: 14/Mayo/2016 a las 09:53
Gracias @Ibauluz , pero parece que hay un problema con el agrupamiento







Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: Binghamton NY.
Estado: Sin conexión
Puntos: 3424
Enlace directo a este mensaje Enviado: 13/Mayo/2016 a las 17:24
A ver si esto te orienta

Sub kk()
    For n = 1 To ActivePresentation.Slides.Count
        ActivePresentation.Slides(n).Select             ' Activate present slide
        Set myDocument = ActivePresentation.Slides(n)   ' Assign to a variable the slide (perhaps is not necessary?)

        ActivePresentation.Slides(n).Shapes.Range(myDocument.Shapes.SelectAll).Group.Select ' Group the shapes together.
        ActivePresentation.Slides(n).Shapes.SelectAll   ' Sellect all the content
        ActiveWindow.Selection.Copy                     ' Copy to clipboard
      ' Now you need to copy from clipboard to Paint or what ever you whant
        
    Next n
End Sub


Con esto estoy tomando para cada diapositiva todo su contenido, agrupándolo y copiándolo en memoria,

Te queda como tarea pegar esa imagen que está en memoria en el sitio que te apetezca.

Un saludo

Luis
El Búho es mi ídolo caido
Arriba
Josepo Ver desplegable
Asiduo
Asiduo


Unido: 25/Mayo/2006
Estado: Sin conexión
Puntos: 229
Enlace directo a este mensaje Enviado: 13/Mayo/2016 a las 08:24

No te había entendido. He modificado la macro pero no consigo copiar todos los elementos, sólo el último

For Each sld In ActivePresentation.Slides
    For Each sh In sld.Shapes
    sld.Select
    SendKeys "^{e}"
    Next
Next

No controlo mucho de programación. No sé si habría que almacenarlo en un array y luego de alguna manera pegarlo en el word, no sé. 
En cuanto al tema de recortar no pasa nada, eso lógicamente lo ajusto yo manualmente después. 
Te agradezco mucho la ayuda si puedes orientarme en dar este último paso para lograr copiarlo todo, me quitaría mucho curro, la verdad. 


Editado por lbauluz - 13/Mayo/2016 a las 16:54
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: Binghamton NY.
Estado: Sin conexión
Puntos: 3424
Enlace directo a este mensaje Enviado: 12/Mayo/2016 a las 20:57
Por eso te digo que hay que hacer una macro. con el mismo bucle que has hecho tú, pero haciendo todo lo que te he dicho.

No es perfecto pero creo que se puede hacer
El Búho es mi ídolo caido
Arriba
Josepo Ver desplegable
Asiduo
Asiduo


Unido: 25/Mayo/2006
Estado: Sin conexión
Puntos: 229
Enlace directo a este mensaje Enviado: 12/Mayo/2016 a las 17:48

Sí , pero eso te vale para una diapositiva nada más, no para 100 por ejemplo


Editado por lbauluz - 13/Mayo/2016 a las 16:53
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: Binghamton NY.
Estado: Sin conexión
Puntos: 3424
Enlace directo a este mensaje Enviado: 12/Mayo/2016 a las 15:35
Pues por programació no, pero lo que yo hago es (se podría hacer una macro en PPT que lo haga) ir a la diapositica, selecciona todo, agrupar

Selecciono todo (CTRL A) y lo pego en el Paint

si quiero recortar algo es ahora cuando lo hago, restringiendo el tamaño de la imagen

Selecciono todo del Paint y lo pego en el Word

Supongo que usando el (denostado) send keysse podría hacer una macro en PPT que haga todo eso, excepto recortar como tú quieres
El Búho es mi ídolo caido
Arriba
 Responder Responder Página  12>
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable