2016-05-10 2 views
0

Я разрабатываю макрос для доказательств презентаций PowerPoint, которые проверяют каждое текстовое поле/форму на слайде и выводит тип, размер и цвет шрифта. У меня он работает до такой степени, что он выплюнет размер шрифта для каждой фигуры, проблема в том, что при наличии нескольких размеров шрифта на строку в данной форме. В настоящее время, если, например, первая линия Arial 12, а следующая строка является Arial 14, выход просто занимает первую строчку, и сказать, что есть две линии Arial 12Ищете разные шрифты в строке в текстовом фрейме

Dim lFindColor As Long 
Dim oSl As Slide 
Dim oSh As Shape 

Dim colorsUsed As String 
Dim fontsUsed As String 

Dim lRow As Long 
Dim lCol As Long 

Dim shpFont As String 
Dim shpSize As String 
Dim shpColour As String 


Set oSl = ActiveWindow.View.Slide 
Dim x As Integer 

    For Each oSh In oSl.Shapes 
    '----Shape Check---------------------------------------------------------- 
     With oSh 
      If .HasTextFrame Then 
       If .TextFrame.HasText Then 
        For x = 1 To .TextFrame.TextRange.Runs.Count 
         shpFont = shpFont & .TextFrame.TextRange.Font.Name & ", " 
         shpSize = shpSize & .TextFrame.TextRange.Font.Size & ", " 
         shpColour = shpColour & .TextFrame.TextRange.Font.Color.RGB & ", " 
        Next 
       End If 
      End If 
     End With 
    Next 

Что я могу сделать для поиска каждой строке и дать мне размер шрифта/тип для каждой отдельной линии в форме?

ответ

2

Вы зацикливаете на .Runs (которые являются подмножествами, если полный TextRange с тем же набором методов и свойств), но выводя свойства стиля для всего TextRange. Вместо этого используйте .TextFrame.TextRange.Runs (x) .Font.Name и т. Д.

+0

Работа, как сон, спасибо! – SFro

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

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