Изменить цвет фона фигуры, если фигура имеет сплошной цвет текста - PullRequest
0 голосов
/ 14 июня 2019

В настоящее время мы пересматриваем рекомендации нашей компании для нашей ERP-системы. У нас есть более 200 рекомендаций, разработанных в PowerPoint, и все они должны быть стандартизированы и обновлены, чтобы соответствовать новому стандарту.

Основная проблема заключается в том, что мне нужно изменить цвет всех фигур. В зависимости от цвета фона или отсутствия цвета фона мне нужно установить разные цвета темы для фона и шрифтов.

Мой первоначальный план состоял в том, чтобы сделать это с помощью петель, основанных на типах фигур. Я написал код, который изменил все формы на правильный цвет, если это не было название. Это не прошло хорошо. Есть только много форм, и я не мог заставить это работать должным образом. Заголовок внезапно будет иметь форму прямоугольника вместо заголовка, и пустые поля также будут заполнены. Мне нужно было что-то еще.

Мой план таков: выясните, имеет ли форма цвет заливки и текст, используя вложенные циклы, если да. Установите соответствующий цвет темы компании. Затем проверьте, есть ли у него текст, и установите его соответствующим образом. Есть только два цвета: синий для фона и белый для текста.

Sub Change_bgcolor_if_shape_has_solid_color_and_text()


Dim oSl As Slide
Dim oSh As Shape

With ActivePresentation
    For Each oSl In .Slides
        For Each oSh In oSl.Shapes
            With oSh
                If .Fill.Type = msoFillSolid Then
                        oSh.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent1
                            If oSh.TextFrame.HasText Then
                               oSh.TextFrame.TextRange.Font.Color.ObjectThemeColor = msoThemeColorBackground1
                            End If
                End If
            End With
        Next
    Next
End With

End Sub

Я написал код, который почти работает, название почему-то тоже изменилось. Я ожидал, что формы без заливки останутся неизменными. Любое указание в правильном направлении будет высоко ценится

...