SectionProperties.AddSection无法正常工作 - bug?

时间:2012-02-11 14:32:05

标签: vsto powerpoint

我刚刚遇到了SectionProperties.AddSection的错误行为。假设我已经创建了四个部分:

1. Default
2. Overview
3. Details
4. Conclusions

现在我打电话给代码:

Presentation.SectionProperties.AddSection(3, "Overview details");

根据文档:SectionProperties.AddSection Method (PowerPoint) 概述详细信息部分应在详细信息部分之前创建。

但不是

1. Default
2. Overview
3. Overview Details
4. Details
5. Conclusions

我最终得到了:

1. Default
2. Overview details
3. Overview
4. Details
5. Conclusions

这是一个常见问题吗?我做了一些测试,似乎插入新部分只有在开头或结尾插入新部分时才能正常工作。

谢谢, 帕维尔

1 个答案:

答案 0 :(得分:2)

在MS Answers上看到你的帖子,介于两者之间,还有更多时间玩这个。这确实是错误的,但有一个解决方法。某些部分没有幻灯片时会出现问题;所以我们将幻灯片添加到任何没有它们的部分,根据需要添加部分,然后删除刚刚添加的“虚拟”幻灯片。

Sub TestAddSection()
    Dim x As Long
    Dim oSl As Slide

    ' Add a dummy slide to each empty section and tag it
    For x = 1 To ActivePresentation.SectionProperties.Count
        Debug.Print ActivePresentation.SectionProperties.Name(x)
        If ActivePresentation.SectionProperties.SlidesCount(x) = 0 Then
          ' activepresentation.SectionProperties.
          Set oSl = ActivePresentation.Slides.AddSlide(1, ActivePresentation.Designs(1).SlideMaster.CustomLayouts(1))
          oSl.Tags.Add "DUMMY", "YES"
          oSl.MoveToSectionStart (x)
        End If
    Next

    ' add new section
    ActivePresentation.SectionProperties.AddSection 3, "NEW GUY"

    ' And delete the dummy slides
    With ActivePresentation
        For x = .Slides.Count To 1 Step -1
            If .Slides(x).Tags("DUMMY") = "YES" Then
                .Slides(x).Delete
            End If
        Next
    End With
End Sub

我在索引1添加幻灯片,然后将它们移动到需要它们的部分的开头。也许有一种方法可以将它们直接添加到该部分,但我找不到它。