|
Responder ![]() |
Página 12> |
Autor | ||
Josepo ![]() Asiduo ![]() Unido: 25/Mayo/2006 Estado: Sin conexión Puntos: 229 |
![]() Enviado: 11/Mayo/2016 a las 10:06 |
|
Hola a todos.
Tengo que pasar unos manuales de powerpoint a word. Normalmente guardo todas las diapositivas en jpg y luego las inserto en el word y ya. Suelen ser unas 200 diapositivas. Normalmente me piden que meta unas 2 diapositivas por hoja de word. Así que quedan unas 100 hojas. Pero luego me piden que intente recortar márgenes superiores e inferiores de las diapositivas, quitar imágenes poco relevantes que ocupen espacio, ajustar espaciados entre parrafos, y cosillas similares para que en el word queden menos de 100 páginas. Para el primero, lo que hice es guardar todas las diapositivas en jpg (con guardar como) y luego insertarlas en el word. Hasta ahí bien, pero claro luego tengo que ir a las 200 imágenes que quedan en las 100 hojas del word, e ir recortando los márgenes, y recortando partes de las imágenes (espaciados grandes, encabezados grandes,etc) para ir consiguiendo un word más reducido de unas 70 hojas. Bastante tedioso. Había pensado en copiar todos los textos e imágenes de las diapositivas pero sin el diseño de la diapositiva, y pegarlos al word. Evidentemente tendría que revisar el word , pero creo que me ahorraría mucho tiempo. Sólo sería ir ajustando saltos de párrafo, comprobar que las imágenes no se han descuadrado, etc). Pero, ¿cómo copio todo el contenido del powerpoint sin copiar la diapositiva entera? Es decir, lo que quiero es copiar los cuadros de textos, imágenes, figuras,etc , es decir, el contenido de todas las diapositivas pero sin el fondo de la diapositiva. ¿Se os ocurre algo? ¿Quizás un VBA que recorra todas las diapositivas y seleccione todos los objetos que contenga? O igual alguna opción más sencilla que no estoy viendo
Editado por Josepo - 11/Mayo/2016 a las 10:15 |
||
![]() |
||
Josepo ![]() Asiduo ![]() Unido: 25/Mayo/2006 Estado: Sin conexión Puntos: 229 |
![]() |
|
Con este bucle se seleccionan los objetos de cada diapositiva pero pasa de uno a otro la selección, no se seleccionan todos
For Each sld In ActivePresentation.Slides For Each sh In sld.Shapes sld.Select Next Next ¿A alguien se le ocurre como mantener todos seleccionados?
|
||
![]() |
||
lbauluz ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador ![]() ![]() Unido: 29/Marzo/2005 Localización: La Gloria Estado: Sin conexión Puntos: 3657 |
![]() |
|
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 un pajarraco
|
||
![]() |
||
Josepo ![]() Asiduo ![]() Unido: 25/Mayo/2006 Estado: Sin conexión Puntos: 229 |
![]() |
|
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 |
||
![]() |
||
lbauluz ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador ![]() ![]() Unido: 29/Marzo/2005 Localización: La Gloria Estado: Sin conexión Puntos: 3657 |
![]() |
|
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 un pajarraco
|
||
![]() |
||
Josepo ![]() Asiduo ![]() Unido: 25/Mayo/2006 Estado: Sin conexión Puntos: 229 |
![]() |
|
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 |
||
![]() |
||
lbauluz ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador ![]() ![]() Unido: 29/Marzo/2005 Localización: La Gloria Estado: Sin conexión Puntos: 3657 |
![]() |
|
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 un pajarraco
|
||
![]() |
||
Josepo ![]() Asiduo ![]() Unido: 25/Mayo/2006 Estado: Sin conexión Puntos: 229 |
![]() |
|
Gracias @Ibauluz , pero parece que hay un problema con el agrupamiento
![]() ![]() |
||
![]() |
||
lbauluz ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador ![]() ![]() Unido: 29/Marzo/2005 Localización: La Gloria Estado: Sin conexión Puntos: 3657 |
![]() |
|
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 un pajarraco
|
||
![]() |
||
Josepo ![]() Asiduo ![]() Unido: 25/Mayo/2006 Estado: Sin conexión Puntos: 229 |
![]() |
|
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 |
||
![]() |
||
Mihura ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador ![]() ![]() Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 12529 |
![]() |
|
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
|
||
![]() |
||
Mihura ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador ![]() ![]() Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 12529 |
![]() |
|
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:
Si haces lo mismo con Word, verás que la orden de pegar es:
Supongo que ya tendrás abierto un Word por automatización ... ¿no? Editado por Mihura - 15/Mayo/2016 a las 11:18 |
||
![]() |
||
Josepo ![]() Asiduo ![]() Unido: 25/Mayo/2006 Estado: Sin conexión Puntos: 229 |
![]() |
|
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?
|
||
![]() |
||
Mihura ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador ![]() ![]() Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 12529 |
![]() |
|
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. |
||
![]() |
||
Josepo ![]() Asiduo ![]() Unido: 25/Mayo/2006 Estado: Sin conexión Puntos: 229 |
![]() |
|
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
|
||
![]() |
Responder ![]() |
Página 12> |
Tweet
|
Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |