简体   繁体   中英

Excel to update PowerPoint Presentation

I have a presentation and I have to update it every week. The information I update are a bunch of imagens I generate from a Excel pivot tables (copy from Excel and paste directly on PowerPoint). Today I can do this doing this:

Set objPPT = CreateObject("PowerPoint.Application")
objPPT.Visible = True

Set PPTPrez = 
objPPT.Presentations.Open("\\network_folder\presentation.pptm")   
Set pSlide = PPTPrez.Slides(2)
If pSlide.Shapes.Count <> 0 Then
ActiveWorkbook.Sheets("Pivot1").Range("A8:Z18").CopyPicture
pSlide.Shapes.Paste  
EndIf

It work flawless... But I need a litle bit more control and precision... I need to select the current image on slide, delete it and paste the new one in the same location... Some slides have 3 images or more... I cann't figure it out how to properly tell to VBA what image are what and choose the pivot table with the correct info for that image... I don't even know if this is possible... But another solution I have tried is how to specify the position and dimensions of the image on the slide... I can before update, delete all imagens... In this scenario, how to specify the dimensions and positioning?

Thanks!!!

Ps.: Sorry my bad english

This example (based on your code) may point you in the right direction. You need to know the powerpoint shape name (which you can get via VBA or via the ribbon Home-Select-Selection Pane.

Option Explicit

Public Sub UpdateShapes()

    Dim vPowerPoint As PowerPoint.Application
    Dim vPresentation As Presentation
    Dim vSlide As Slide

    Dim vShapeName As String
    Dim vShape, vNewShape

    Set vPowerPoint = New PowerPoint.Application
    vPowerPoint.Visible = True

    ' Open the powerpoint presentation
    Set vPresentation = vPowerPoint.Presentations.Open("\\network_folder\presentation.pptm")

    ' Set slide to be worked on
    Set vSlide = vPresentation.Slides(2)

    ' Set shape to (for this example) "Picture 3"
    vShapeName = "Picture 3"
    Set vShape = vSlide.Shapes(vShapeName)

    ' Copy and paste new shape (picture) of range specified
    ThisWorkbook.Sheets("Sheet1").Range("A6:B9").CopyPicture
    Set vNewShape = vSlide.Shapes.Paste

    ' Align size and position of new shape to that of old shape
    With vNewShape
        .Width = vShape.Width
        .Height = vShape.Height
        .Left = vShape.Left
        .Top = vShape.Top
    End With

    ' Delete original shape, rename new shape to original so code works next replace cycle
    vSlide.Shapes(vShapeName).Delete
    vNewShape.Name = vShapeName

End Sub

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM