SectionProperties.AddSection не работает должным образом - ошибка? - PullRequest
1 голос
/ 11 февраля 2012

Я только что столкнулся с ошибочным поведением SectionProperties.AddSection.Допустим, у меня уже есть четыре раздела:

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

А теперь я вызываю код:

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

Согласно документации: Метод SectionProperties.AddSection (PowerPoint) Общие сведения * Раздел 1010 * должен быть создан перед разделом Сведения.

Но вместо получения

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

я получаю:

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

Это общая проблема?Я провел некоторое тестирование, и кажется, что вставка новых разделов работает правильно только тогда, когда новый раздел вставляется в начало или конец.

Спасибо, Павел

1 Ответ

2 голосов
/ 12 февраля 2012

Видел ваш пост на MS, а также между ними было немного больше времени, чтобы поиграть с этим. Это действительно глючит, но есть обходной путь. Проблема возникает, когда в некоторых разделах нет слайдов; поэтому мы добавим слайды в любые разделы, в которых их нет, добавим нужный раздел, а затем удалим только что добавленные «фиктивные» слайды.

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, а затем перемещаю их в начало раздела, где они нужны. Возможно, есть способ добавить их прямо в раздел, но я не смог его найти.

...