Saltar al contenido

Copie diapositivas de una presentación a otra (VBA para PowerPoint)

En este artículo, explicaré cómo puede usar VBA para copiar diapositivas de una presentación de PowerPoint a otra.

Ejemplo 1

Sub main()
Dim objPresentation As Presentation
Dim i As Integer

'open the target presentation
Set objPresentation = Presentations.Open("C:2.pptx")
For i = 1 To objPresentation.Slides.Count
    objPresentation.Slides.Item(i).Copy
    Presentations.Item(1).Slides.Paste
Next i
objPresentation.Close
End Sub

Esta es la presentación con la macro antes de que se ejecute el script:
Antes de ejecutar el código
Esta es la presentación con la diapositiva que queremos copiar:
Diapositivas para copiar
Resultado:
Resultado

Conservar el formato al copiar diapositivas

El problema del ejemplo anterior era que no se copiaba el formato del tema de las presentaciones originales. Supongamos que las 2 hojas tuvieran un diseño diferente, habría sucedido lo siguiente:
Antes de ejecutar el código
Esta es la presentación con la diapositiva que queremos copiar:
Diapositivas para copiar
Resultado:
Resultado
Para resolver este problema, puede utilizar el siguiente código:

Sub Example2()
Dim objPresentation As Presentation
Dim i As Integer

'open the target presentation
Set objPresentation = Presentations.Open("C:2.pptx")
For i = 1 To objPresentation.Slides.Count
    objPresentation.Slides.Item(i).Copy
    Presentations.Item(1).Slides.Paste
    Presentations.Item(1).Slides.Item(Presentations.Item(1).Slides.Count).Design = _
        objPresentation.Slides.Item(i).Design
Next i
objPresentation.Close
End Sub

Además de copiar la diapositiva, el código anterior copia el diseño. Si desea hacer esto manualmente, copie el patrón de diapositivas a la nueva presentación. No puede copiar el patrón de diapositivas usando VBA, en su lugar puede establecer la propiedad de diseño de las diapositivas.

Descargar archivos de muestra.