仅导出 Powerpoint VBA 中特定部分内的幻灯片

hun*_*188 2 powerpoint vba

我有代码可以将幻灯片导出为 PNG 文件,前提是它们满足特定条件(即幻灯片中具有特定的命名形状)。有时幻灯片没有任何已知的形状名称,但它们将位于命名的“部分”内。

我知道我必须以某种方式使用 ActivePresentation.SectionProperties,但我不确定如何去做。我已经按照下面的代码进行了尝试,但没有成功。在此示例中,该部分的名称是“Test”。将会有许多不同的部分,我需要对其中的几个部分执行此操作。任何帮助将非常感激。谢谢你!

Dim sld As Slide
i = 1

For Each sld in ActivePresentation.Slides

If ActivePresentation.SectionProperties.Name("Test") Then
   ActivePresentation.Slides(i).Export filenamepng & "TEST" & i & ".png", "PNG"
End If

i = i + 1

Next
Run Code Online (Sandbox Code Playgroud)

小智 5

@猎人21188

我想这就是你所需要的。

您将检查每张幻灯片属于哪个部分。之后,您验证它是否来自“测试”部分,如果是真的,陷阱!出口。

观察。该函数将SectionIndex从Slide Atribute转换为不在Slides集合中的SectionName。

Sub Test_Export()

Dim sld As Slide
i = 1

DesiredSection = SectionIndexOf("Test")

For Each sld In ActivePresentation.Slides

If sld.sectionIndex = DesiredSection Then
   ActivePresentation.Slides(i).Export filenamepng & "TEST" & i & ".png", "PNG"
End If

i = i + 1

Next


End Sub

Function SectionIndexOf(sSectionName As String) As Long
    Dim x As Long
    With ActivePresentation.SectionProperties
        For x = 1 To .Count
            If .Name(x) = sSectionName Then
                SectionIndexOf = x
            End If
        Next
    End With
End Function
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案(请投票!)。一些快速观察:您不需要变量“i” - 只需使用“sld.SlideNumber”,这样您就不必增加任何内容(我知道您遵循OP的代码格式,这只是一个观察);我还建议始终使用“Option Explicit”来声明所有变量以跟踪您正在做的事情。 (3认同)
  • @PeterT除非有充分的理由使用 sld.SlideNumber,否则最好使用 sld.SlideIndex。SlideIndex 返回演示文稿中幻灯片的序号(即,第 42 张幻灯片也始终为 SlideIndex=42)。SlideNumber 的可预测性较差,因为用户可以设置起始编号,因此如果用户将起始编号设置为 42,则第二张幻灯片将返回 SlideNumber = 43。当您需要知道将出现的编号时,SlideNumber 很有用。幻灯片编号(即页脚中)处于活动状态。 (2认同)