2016-05-16 3 views
0

Я написал цикл for для проверки каждого размера шрифта, используемого в интеллектуальном искусстве на слайде, и для вывода размера шрифта для каждого блока текста в фигурах. По какой-то причине первая запись в массиве обновляется правильно (например, у меня будет блок текста в виде строки, объединенной с размером шрифта), но любые последующие записи в массиве только обновляют размер шрифта, но не захватывают фактический блок текста. Массив подсчитывается должным образом (например, 5 образцов умного искусства подсчитываются должным образом).Smart Art Arrays

Dim j,e,f as integer 
Dim osh as shape 
Dim osl as slide 

Dim smrtCount as integer 
Dim osmrtSize() 
dim osmrtSizeMatch() 

set osl = activewindow.view.slide 

For each 
With osh in osl.shapes 
If .Type = msoSmartArt Then 
      smrtCount = smrtCount + .GroupItems.Count 
      ReDim Preserve osmrtSizeMatch(1 To smrtCount) 
      ReDim Preserve osmrtSize(1 To smrtCount) 
      For j = 1 To .GroupItems.Count 
       e = e + 1 
       f = f + 1 
       osmrtSize(e) = .GroupItems(j).TextFrame.TextRange.Runs(j).Font.Size 'store the sizes 
       osmrtSizeMatch(f) = .GroupItems(j).TextFrame.TextRange.Runs(j).Text '& " = " & .GroupItems(j).TextFrame.TextRange.Runs(j).Font.Size '& vbCrLf 
      Next j 
End If 

ответ

0

Обдумал это. Нужно использовать .smartart.allnodes(), а не .groupitems:

osmrtSizeMatch(f) = .SmartArt.AllNodes(j).TextFrame2.TextRange.Text 
0

При обращении SmartArt с помощью группы элементов, которые необходимо сделать проверку .HasTextFrame элемента в противном случае это может ошибка, когда например SmartArt включает в себя линию.

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

  • Нет связанных вопросов^_^