2012-02-11 15 views
1

Я только что столкнулся с ошибкой поведения SectionProperties.AddSection. Скажем, у меня есть четыре раздела уже созданы:РазделProperties.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 

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

Спасибо, Paweł

+0

Я получаю еще более странное поведение. В презентации с одним слайдом в sectino 3 и без слайдов в предыдущих двух разделах добавление нового раздела приводит к тому, что раздел добавляется в начале презентации, то есть индекс 1, независимо от индекса, который я указываю, если только это не 4 (т. е. больше, чем количество существующих разделов, и в этом случае оно добавляется в конце презентации). Кажется, вам нужен хотя бы один слайд до и после существующего раздела, который вы хотите вставить в новый раздел, если хотите, чтобы он работал. Багги действительно. –

ответ

2

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

Смежные вопросы