如何在打开的演示文稿中用SlideID替换幻灯片

时间:2019-08-20 17:32:20

标签: powerpoint-vba

我想从我的幻灯片库(源文件)中获取更新的幻灯片,并使用宏在打开的演示文稿中找到相同的幻灯片并将其替换为更新的幻灯片。但是我需要通过SlideID而不是页码来定义幻灯片。因此,操作是:在打开的演示文稿中找到幻灯片(按SlideID),将其删除,然后在源文件的非常相同的位置插入更新的幻灯片(具有相同的SlideID)。

我尝试了下面的代码,但它删除了打开的演示文稿中的不良幻灯片,然后在末尾而不是在相同位置粘贴了良好的幻灯片。感谢您解决此问题的帮助。

Sub ReplaceOneSlide()
ActivePresentation.Slides.FindBySlideID(1854).Delete
Dim sourcePresentation As Presentation
    On Error Resume Next
    Set sourcePresentation = Application.Presentations("X:\Marketing Presentations (Final) \Slide Library\Slide Library.pptm") 'change the name accordingly
    If sourcePresentation Is Nothing Then
        MsgBox "Source presentation not found!", vbExclamation
        Exit Sub
    End If
    On Error GoTo 0

    Dim vSlideIDs As Variant
    vSlideIDs = Array(1854) 'change the slide IDs accordingly

    Dim i As Long
    For i = LBound(vSlideIDs) To UBound(vSlideIDs)
        sourcePresentation.Slides.FindBySlideID(vSlideIDs(i)).Copy
        ActivePresentation.Slides.Paste
    Next i

End Sub

1 个答案:

答案 0 :(得分:1)

关于“如何保存和关闭活动演示文稿以及如何在除源文件以外的任何其他打开的演示文稿中自动运行宏”,

Dim oPres as Presentation
Dim sMyName as String

sMyName = "BlahBlah" ' fill in the name of the pres with macros here

For Each oPres in ActivePresentations
  If Not Ucase(oPres.Name) = Ucase(sMyName) Then
     ' do whatever's needed to oPres here
     oPres.Save
     oPres.Close
  End if
Next