搜索具有指定标签的幻灯片并将其替换为主演示文稿中的幻灯片
Searching for a slide with a specified tag and replacing it with a slide from a master presentation
我想在演示文稿中搜索具有指定标签的一张或多张幻灯片。找到后,我想用母版演示文稿中的另一张幻灯片替换这张幻灯片。
我试图用我收集的其他 VBA 的部分内容创建一个解决方案。我感觉我已经接近了,但还没有到达那里(注意下面让我陷入了一个循环)。
如有任何帮助,我们将不胜感激
Sub ReplaceSlideThatHasTag()
For Each osld In ActivePresentation.Slides
'here I am selecting the slide that has the tag name "winter" and the tag id "123
If osld.Tags("WINTER") = "123" Then osld.Select
'here I am trying to add slide 27 from my master presentation immediately before the slide with the tag
ActivePresentation.Slides.InsertFromFile ("C:\my files\master presentation.PPTX"), ActiveWindow.Selection.SlideRange.SlideIndex, 24, 24
'and finally I am looking to delete the slide with the tag
If osld.Tags("WINTER") = "123" Then osld.Delete
Next osld
End Sub
一些一般性建议:除非无法避免,否则永远不要 select 任何事情,而且几乎从来没有无法避免的情况。下面的建议(带有评论)。试试这个版本。
Sub ReplaceSlideThatHasTag()
' ALWAYS dim your variables before using them
Dim osld as Slide
For Each osld In ActivePresentation.Slides
'here I am selecting the slide that has the tag name "winter" and the tag id "123
If osld.Tags("WINTER") = "123" Then ' DON'T select anythin osld.Select
'here I am trying to add slide 27 from my master presentation immediately before the slide with the tag
'ActivePresentation.Slides.InsertFromFile ("C:\my files\master presentation.PPTX"), 'ActiveWindow.Selection.SlideRange.SlideIndex, 24, 24
' But since we're not selecting anything ...
ActivePresentation.Slides.InsertFromFile ("C:\my files\master presentation.PPTX"), _ osld.SlideIndex
'and finally I am looking to delete the slide with the tag
' But we already have a reference to the slide in the osld variable
' and we know that the slide has the tag so ...
'If osld.Tags("WINTER") = "123" Then osld.Delete
osld.Delete
' And since we've found the slide and done the deed,
' no need to continue...
Exit For
End If
Next osld
End Sub
我想在演示文稿中搜索具有指定标签的一张或多张幻灯片。找到后,我想用母版演示文稿中的另一张幻灯片替换这张幻灯片。
我试图用我收集的其他 VBA 的部分内容创建一个解决方案。我感觉我已经接近了,但还没有到达那里(注意下面让我陷入了一个循环)。
如有任何帮助,我们将不胜感激
Sub ReplaceSlideThatHasTag()
For Each osld In ActivePresentation.Slides
'here I am selecting the slide that has the tag name "winter" and the tag id "123
If osld.Tags("WINTER") = "123" Then osld.Select
'here I am trying to add slide 27 from my master presentation immediately before the slide with the tag
ActivePresentation.Slides.InsertFromFile ("C:\my files\master presentation.PPTX"), ActiveWindow.Selection.SlideRange.SlideIndex, 24, 24
'and finally I am looking to delete the slide with the tag
If osld.Tags("WINTER") = "123" Then osld.Delete
Next osld
End Sub
一些一般性建议:除非无法避免,否则永远不要 select 任何事情,而且几乎从来没有无法避免的情况。下面的建议(带有评论)。试试这个版本。
Sub ReplaceSlideThatHasTag()
' ALWAYS dim your variables before using them
Dim osld as Slide
For Each osld In ActivePresentation.Slides
'here I am selecting the slide that has the tag name "winter" and the tag id "123
If osld.Tags("WINTER") = "123" Then ' DON'T select anythin osld.Select
'here I am trying to add slide 27 from my master presentation immediately before the slide with the tag
'ActivePresentation.Slides.InsertFromFile ("C:\my files\master presentation.PPTX"), 'ActiveWindow.Selection.SlideRange.SlideIndex, 24, 24
' But since we're not selecting anything ...
ActivePresentation.Slides.InsertFromFile ("C:\my files\master presentation.PPTX"), _ osld.SlideIndex
'and finally I am looking to delete the slide with the tag
' But we already have a reference to the slide in the osld variable
' and we know that the slide has the tag so ...
'If osld.Tags("WINTER") = "123" Then osld.Delete
osld.Delete
' And since we've found the slide and done the deed,
' no need to continue...
Exit For
End If
Next osld
End Sub